arch: riscv: remove unneeded context switch to gp register
RISC-V global pointer (GP) register is neither caller nor callee register, and it's a constant value in the single ELF file. Thus, we don't need to save/restore GP at ISR enter/exit. Remove it to optimize context switch performance. Signed-off-by: Jim Shu <cwshu@andestech.com>
This commit is contained in:
parent
e1c7333dc7
commit
e3fe63a221
4 changed files with 1 additions and 6 deletions
|
@ -40,7 +40,7 @@ FUNC_NORETURN void z_riscv_fatal_error(unsigned int reason,
|
|||
LOG_ERR(" a6: " PR_REG " t6: " PR_REG, esf->a6, esf->t6);
|
||||
LOG_ERR(" a7: " PR_REG, esf->a7);
|
||||
LOG_ERR(" " NO_REG " tp: " PR_REG, esf->tp);
|
||||
LOG_ERR(" ra: " PR_REG " gp: " PR_REG, esf->ra, esf->gp);
|
||||
LOG_ERR(" ra: " PR_REG, esf->ra);
|
||||
LOG_ERR(" mepc: " PR_REG, esf->mepc);
|
||||
LOG_ERR("mstatus: " PR_REG, esf->mstatus);
|
||||
LOG_ERR("");
|
||||
|
|
|
@ -122,8 +122,6 @@
|
|||
RV_OP_STOREREG temp, __z_arch_esf_t_mstatus_OFFSET(to_reg) ;\
|
||||
RV_OP_LOADREG temp, __z_arch_esf_t_ra_OFFSET(from_reg) ;\
|
||||
RV_OP_STOREREG temp, __z_arch_esf_t_ra_OFFSET(to_reg) ;\
|
||||
RV_OP_LOADREG temp, __z_arch_esf_t_gp_OFFSET(from_reg) ;\
|
||||
RV_OP_STOREREG temp, __z_arch_esf_t_gp_OFFSET(to_reg) ;\
|
||||
RV_OP_LOADREG temp, __z_arch_esf_t_tp_OFFSET(from_reg) ;\
|
||||
RV_OP_STOREREG temp, __z_arch_esf_t_tp_OFFSET(to_reg) ;\
|
||||
RV_OP_LOADREG temp, __z_arch_esf_t_t0_OFFSET(from_reg) ;\
|
||||
|
@ -179,7 +177,6 @@
|
|||
|
||||
#define DO_CALLER_SAVED(op) \
|
||||
op ra, __z_arch_esf_t_ra_OFFSET(sp) ;\
|
||||
op gp, __z_arch_esf_t_gp_OFFSET(sp) ;\
|
||||
op tp, __z_arch_esf_t_tp_OFFSET(sp) ;\
|
||||
op t0, __z_arch_esf_t_t0_OFFSET(sp) ;\
|
||||
op t1, __z_arch_esf_t_t1_OFFSET(sp) ;\
|
||||
|
|
|
@ -65,7 +65,6 @@ GEN_OFFSET_SYM(_callee_saved_t, fs11);
|
|||
|
||||
/* esf member offsets */
|
||||
GEN_OFFSET_SYM(z_arch_esf_t, ra);
|
||||
GEN_OFFSET_SYM(z_arch_esf_t, gp);
|
||||
GEN_OFFSET_SYM(z_arch_esf_t, tp);
|
||||
GEN_OFFSET_SYM(z_arch_esf_t, t0);
|
||||
GEN_OFFSET_SYM(z_arch_esf_t, t1);
|
||||
|
|
|
@ -51,7 +51,6 @@ struct soc_esf {
|
|||
|
||||
struct __esf {
|
||||
ulong_t ra; /* return address */
|
||||
ulong_t gp; /* global pointer */
|
||||
ulong_t tp; /* thread pointer */
|
||||
|
||||
ulong_t t0; /* Caller-saved temporary register */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue