Lines Matching refs:disp_ctx

131 	sdei_dispatch_context_t *disp_ctx;  in push_dispatch()  local
136 disp_ctx = &state->dispatch_stack[state->stack_top]; in push_dispatch()
139 return disp_ctx; in push_dispatch()
173 sdei_dispatch_context_t *disp_ctx; in save_event_ctx() local
181 disp_ctx = push_dispatch(); in save_event_ctx()
182 assert(disp_ctx != NULL); in save_event_ctx()
183 disp_ctx->map = map; in save_event_ctx()
186 memcpy(disp_ctx->x, tgt_gpregs, sizeof(disp_ctx->x)); in save_event_ctx()
187 disp_ctx->spsr_el3 = read_ctx_reg(tgt_el3, CTX_SPSR_EL3); in save_event_ctx()
188 disp_ctx->elr_el3 = read_ctx_reg(tgt_el3, CTX_ELR_EL3); in save_event_ctx()
190 return disp_ctx; in save_event_ctx()
193 static void restore_event_ctx(const sdei_dispatch_context_t *disp_ctx, void *tgt_ctx) in restore_event_ctx() argument
202 CASSERT(sizeof(disp_ctx->x) == (SDEI_SAVED_GPREGS * sizeof(uint64_t)), in restore_event_ctx()
206 memcpy(tgt_gpregs, disp_ctx->x, sizeof(disp_ctx->x)); in restore_event_ctx()
207 write_ctx_reg(tgt_el3, CTX_SPSR_EL3, disp_ctx->spsr_el3); in restore_event_ctx()
208 write_ctx_reg(tgt_el3, CTX_ELR_EL3, disp_ctx->elr_el3); in restore_event_ctx()
216 disp_ctx->disable_cve_2018_3639); in restore_event_ctx()
255 static void sdei_set_elr_spsr(sdei_entry_t *se, sdei_dispatch_context_t *disp_ctx) in sdei_set_elr_spsr() argument
261 u_register_t interrupted_pstate = disp_ctx->spsr_el3; in sdei_set_elr_spsr()
275 sdei_dispatch_context_t *disp_ctx; in setup_ns_dispatch() local
278 disp_ctx = save_event_ctx(map, ctx); in setup_ns_dispatch()
290 SMC_SET_GP(ctx, CTX_GPREG_X2, disp_ctx->elr_el3); in setup_ns_dispatch()
291 SMC_SET_GP(ctx, CTX_GPREG_X3, disp_ctx->spsr_el3); in setup_ns_dispatch()
294 sdei_set_elr_spsr(se, disp_ctx); in setup_ns_dispatch()
301 disp_ctx->disable_cve_2018_3639 = read_ctx_reg(tgt_cve_2018_3639, in setup_ns_dispatch()
308 disp_ctx->dispatch_jmp = dispatch_jmp; in setup_ns_dispatch()
373 const sdei_dispatch_context_t *disp_ctx; in sdei_intr_handler() local
473 disp_ctx = get_outstanding_dispatch(); in sdei_intr_handler()
480 if (disp_ctx != NULL) in sdei_intr_handler()
481 assert(is_event_normal(disp_ctx->map)); in sdei_intr_handler()
488 assert(disp_ctx == NULL); in sdei_intr_handler()
557 sdei_dispatch_context_t *disp_ctx; in sdei_dispatch_event() local
580 disp_ctx = get_outstanding_dispatch(); in sdei_dispatch_event()
581 if (disp_ctx != NULL) { in sdei_dispatch_event()
586 if (is_event_critical(disp_ctx->map)) in sdei_dispatch_event()
632 sdei_dispatch_context_t *disp_ctx; in sdei_event_complete() local
640 disp_ctx = get_outstanding_dispatch(); in sdei_event_complete()
641 if (disp_ctx == NULL) in sdei_event_complete()
648 map = disp_ctx->map; in sdei_event_complete()
676 restore_event_ctx(disp_ctx, ctx); in sdei_event_complete()
696 write_elr_el2(disp_ctx->elr_el3); in sdei_event_complete()
697 write_spsr_el2(disp_ctx->spsr_el3); in sdei_event_complete()
700 write_elr_el1(disp_ctx->elr_el3); in sdei_event_complete()
701 write_spsr_el1(disp_ctx->spsr_el3); in sdei_event_complete()
706 end_sdei_synchronous_dispatch(disp_ctx->dispatch_jmp); in sdei_event_complete()
713 sdei_dispatch_context_t *disp_ctx; in sdei_event_context() local
719 disp_ctx = get_outstanding_dispatch(); in sdei_event_context()
720 if (disp_ctx == NULL) in sdei_event_context()
723 assert(disp_ctx->map != NULL); in sdei_event_context()
725 if (!can_sdei_state_trans(get_event_entry(disp_ctx->map), DO_CONTEXT)) in sdei_event_context()
733 return (int64_t) disp_ctx->x[param]; in sdei_event_context()