diff --git a/services/spd/opteed/opteed_common.c b/services/spd/opteed/opteed_common.c index a0cd86c..2693e7d 100644 --- a/services/spd/opteed/opteed_common.c +++ b/services/spd/opteed/opteed_common.c @@ -20,7 +20,7 @@ void opteed_init_optee_ep_state(struct entry_point_info *optee_entry_point, uint32_t rw, uint64_t pc, uint64_t pageable_part, uint64_t mem_limit, - optee_context_t *optee_ctx) + uint64_t dt_addr, optee_context_t *optee_ctx) { uint32_t ep_attr; @@ -54,6 +54,7 @@ zeromem(&optee_entry_point->args, sizeof(optee_entry_point->args)); optee_entry_point->args.arg0 = pageable_part; optee_entry_point->args.arg1 = mem_limit; + optee_entry_point->args.arg2 = dt_addr; } /******************************************************************************* diff --git a/services/spd/opteed/opteed_main.c b/services/spd/opteed/opteed_main.c index b3031e4..13a307a 100644 --- a/services/spd/opteed/opteed_main.c +++ b/services/spd/opteed/opteed_main.c @@ -96,6 +96,7 @@ uint32_t linear_id; uint64_t opteed_pageable_part; uint64_t opteed_mem_limit; + uint64_t dt_addr; linear_id = plat_my_core_pos(); @@ -120,19 +121,17 @@ if (!optee_ep_info->pc) return 1; - /* - * We could inspect the SP image and determine it's execution - * state i.e whether AArch32 or AArch64. - */ opteed_rw = optee_ep_info->args.arg0; opteed_pageable_part = optee_ep_info->args.arg1; opteed_mem_limit = optee_ep_info->args.arg2; + dt_addr = optee_ep_info->args.arg3; opteed_init_optee_ep_state(optee_ep_info, opteed_rw, optee_ep_info->pc, opteed_pageable_part, opteed_mem_limit, + dt_addr, &opteed_sp_context[linear_id]); /* diff --git a/services/spd/opteed/opteed_pm.c b/services/spd/opteed/opteed_pm.c index 5a1dd4f..2420b1e 100644 --- a/services/spd/opteed/opteed_pm.c +++ b/services/spd/opteed/opteed_pm.c @@ -99,7 +99,7 @@ opteed_init_optee_ep_state(&optee_on_entrypoint, opteed_rw, (uint64_t)&optee_vectors->cpu_on_entry, - 0, 0, optee_ctx); + 0, 0, 0, optee_ctx); /* Initialise this cpu's secure context */ cm_init_my_context(&optee_on_entrypoint); diff --git a/services/spd/opteed/opteed_private.h b/services/spd/opteed/opteed_private.h index 11c1a1f..6cda2c8 100644 --- a/services/spd/opteed/opteed_private.h +++ b/services/spd/opteed/opteed_private.h @@ -149,6 +149,7 @@ uint64_t pc, uint64_t pageable_part, uint64_t mem_limit, + uint64_t dt_addr, optee_context_t *optee_ctx); extern optee_context_t opteed_sp_context[OPTEED_CORE_COUNT];