diff --git a/services/spd/pncd/pncd_common.c b/services/spd/pncd/pncd_common.c index 6fdb6293f..8e89491ce 100644 --- a/services/spd/pncd/pncd_common.c +++ b/services/spd/pncd/pncd_common.c @@ -67,8 +67,9 @@ uint64_t pncd_synchronous_sp_entry(pnc_context_t *pnc_ctx) /* Apply the Secure EL1 system register context and switch to it */ assert(cm_get_context(SECURE) == &pnc_ctx->cpu_ctx); cm_el1_sysregs_context_restore(SECURE); + #if CTX_INCLUDE_FPREGS - fpregs_context_restore(get_fpregs_ctx(cm_get_context(SECURE))); + simd_ctx_restore(SECURE); #endif cm_set_next_eret_context(SECURE); @@ -90,8 +91,9 @@ void pncd_synchronous_sp_exit(pnc_context_t *pnc_ctx, uint64_t ret) /* Save the Secure EL1 system register context */ assert(cm_get_context(SECURE) == &pnc_ctx->cpu_ctx); cm_el1_sysregs_context_save(SECURE); + #if CTX_INCLUDE_FPREGS - fpregs_context_save(get_fpregs_ctx(cm_get_context(SECURE))); + simd_ctx_save(SECURE, false); #endif assert(pnc_ctx->c_rt_ctx != 0); diff --git a/services/spd/pncd/pncd_main.c b/services/spd/pncd/pncd_main.c index 99c4aa1b2..cc1c1f286 100644 --- a/services/spd/pncd/pncd_main.c +++ b/services/spd/pncd/pncd_main.c @@ -55,8 +55,9 @@ static void context_save(unsigned long security_state) assert(sec_state_is_valid(security_state)); cm_el1_sysregs_context_save((uint32_t) security_state); + #if CTX_INCLUDE_FPREGS - fpregs_context_save(get_fpregs_ctx(cm_get_context(security_state))); + simd_ctx_save((uint32_t)security_state, false); #endif } @@ -72,8 +73,9 @@ static void *context_restore(unsigned long security_state) /* Restore state */ cm_el1_sysregs_context_restore((uint32_t) security_state); + #if CTX_INCLUDE_FPREGS - fpregs_context_restore(get_fpregs_ctx(cm_get_context(security_state))); + simd_ctx_restore((uint32_t)security_state); #endif cm_set_next_eret_context((uint32_t) security_state);