Hi TFM experts,

I have a question about the code logic of irq handling in library mode, code blocks in spm_api_func.c are as follows:

void tfm_spm_partition_push_interrupted_ctx(uint32_t partition_idx)
{
    struct spm_partition_runtime_data_t *runtime_data =
        &g_spm_partition_db.partitions[partition_idx].runtime_data;
    struct interrupted_ctx_stack_frame_t *stack_frame =
        (struct interrupted_ctx_stack_frame_t *)runtime_data->ctx_stack_ptr;

    stack_frame->partition_state = runtime_data->partition_state;
}

void tfm_spm_partition_push_handler_ctx(uint32_t partition_idx)
{
    struct spm_partition_runtime_data_t *runtime_data =
        &g_spm_partition_db.partitions[partition_idx].runtime_data;
    struct handler_ctx_stack_frame_t *stack_frame =
        (struct handler_ctx_stack_frame_t *)
            runtime_data->ctx_stack_ptr;

    stack_frame->partition_state = runtime_data->partition_state;
    stack_frame->caller_partition_idx = runtime_data->caller_partition_idx;

    runtime_data->ctx_stack_ptr +=
        sizeof(struct handler_ctx_stack_frame_t) / sizeof(uint32_t);
}

My question is why there is not the following such code logic  at the end of function tfm_spm_partition_push_interrupted_ctx.
runtime_data->ctx_stack_ptr +=
        sizeof(struct interrupted_ctx_stack_frame_t ) / sizeof(uint32_t);

If the interrupted partition is the same as the handler partition, interrupted_ctx_stack_frame_t  and handler_ctx_stack_frame_t should be pushed at different location.

And when pop the stack frame after handling irq, there is the following code logic in tfm_spm_partition_pop_handler_ctx
    runtime_data->ctx_stack_ptr -=
        sizeof(struct handler_ctx_stack_frame_t) / sizeof(uint32_t);

I think the same logic of changing ctx_stack_ptr should be added the begining of the function tfm_spm_partition_pop_interrupted_ctx like the above code logic in tfm_spm_partition_pop_handler_ctx.
    runtime_data->ctx_stack_ptr -=
        sizeof(struct interrupted_ctx_stack_frame_t ) / sizeof(uint32_t);

Please help to check.

Thanks,
Matt