diff options
author | Dan Handley <dan.handley@arm.com> | 2014-05-27 18:46:22 +0100 |
---|---|---|
committer | Dan Handley <dan.handley@arm.com> | 2014-05-27 18:46:22 +0100 |
commit | 05b6edfe26e3674c3e8e8ff6332aae66fe73e4fa (patch) | |
tree | 4718e9edeb45d6290ac3d216280c1f92ed05d293 /services/spd/tspd | |
parent | 22e002da5f635a9e2d4a11d2412fd7a4ac1dd477 (diff) | |
parent | 10b65ecf47a2f88ea7ce9412f3a7c5b0be9ca0d3 (diff) | |
download | trusted-firmware-a-05b6edfe26e3674c3e8e8ff6332aae66fe73e4fa.tar.gz |
Merge pull request #110 from soby-mathew:sm/support_normal_irq_in_tsp-v4 into for-v0.4v0.4-rc1
Diffstat (limited to 'services/spd/tspd')
-rw-r--r-- | services/spd/tspd/tspd_main.c | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/services/spd/tspd/tspd_main.c b/services/spd/tspd/tspd_main.c index da40ea3623..4477fd78b3 100644 --- a/services/spd/tspd/tspd_main.c +++ b/services/spd/tspd/tspd_main.c @@ -504,35 +504,36 @@ uint64_t tspd_smc_handler(uint32_t smc_fid, * Standard SMC call. */ case TSP_FID_RESUME: - /* RESUME should be invoked only by normal world */ - if (!ns) { - assert(0); - break; - } + /* RESUME should be invoked only by normal world */ + if (!ns) { + assert(0); + break; + } - /* - * This is a resume request from the non-secure client. - * save the non-secure state and send the request to - * the secure payload. - */ - assert(handle == cm_get_context(mpidr, NON_SECURE)); + /* + * This is a resume request from the non-secure client. + * save the non-secure state and send the request to + * the secure payload. + */ + assert(handle == cm_get_context(mpidr, NON_SECURE)); - /* Check if we are already preempted before resume */ - if (!get_std_smc_active_flag(tsp_ctx->state)) - SMC_RET1(handle, SMC_UNK); + /* Check if we are already preempted before resume */ + if (!get_std_smc_active_flag(tsp_ctx->state)) + SMC_RET1(handle, SMC_UNK); - cm_el1_sysregs_context_save(NON_SECURE); + cm_el1_sysregs_context_save(NON_SECURE); - /* - * We are done stashing the non-secure context. Ask the - * secure payload to do the work now. - */ + /* + * We are done stashing the non-secure context. Ask the + * secure payload to do the work now. + */ - /* We just need to return to the preempted point in - * TSP and the execution will resume as normal. - */ - cm_el1_sysregs_context_restore(SECURE); - cm_set_next_eret_context(SECURE); + /* We just need to return to the preempted point in + * TSP and the execution will resume as normal. + */ + cm_el1_sysregs_context_restore(SECURE); + cm_set_next_eret_context(SECURE); + SMC_RET0(&tsp_ctx->cpu_ctx); /* * This is a request from the secure payload for more arguments @@ -544,10 +545,6 @@ uint64_t tspd_smc_handler(uint32_t smc_fid, if (ns) SMC_RET1(handle, SMC_UNK); - /* Get a reference to the non-secure context */ - ns_cpu_context = cm_get_context(mpidr, NON_SECURE); - assert(ns_cpu_context); - get_tsp_args(tsp_ctx, x1, x2); SMC_RET2(handle, x1, x2); |