mpxy_opteed_send_message()c
| 2024-12-16
本文字數 228閱讀時長 1 分鐘
  • mpxy_opteed_send_message()
    • If message ID is OPTEED_MSG_COMMUNICATE (0x1) (Called from udomain):
      • If tdomain’s shared memory is NOT valid, return SBI_EINVAL.
      • Otherwise:
        • Direction: udomain -> OpenSBI
        • Copy the source data from udomain to tdomain’s shared memory.
      • Call sbi_ecall_tee_domain_enter() to switch to tdomain.
        • Direction: udomain -> tdomain.
        • The entry point to be switched to is defined by the function type:
          • Function type is defined by the first unsigned long in udomain’s shared memory: ((ulong *)shmem_base)[0].
          • If function type is: ABI_ENTRY_TYPE_FAST (i.e. ARM_SMCCC_FAST_CALL)
          • Otherwise:
    • If message ID is OPTEED_MSG_COMPLETE (0x2) (Called from tdomain):
      • If udomain’s shared memory is NOT valid:
        • Direction: tdomain -> OpenSBI.
        • If ((ulong *)msgbuf)[0] (from tdomain’s shared memory, i.e. $a0) is TEEABI_OPTEED_RETURN_CALL_DONE (0xbe000000):
          • Register OP-TEE entry table:
            • Set entry_vector_table to ((ulong *)msgbuf)[1] (i.e. $a1), i.e. thread_vector_table defined in OP-TEE.
      • Otherwise, copy the source data from tdomain to udomain’s shared memory.
        • Direction: tdomain -> udomain.
        • Only $a1 ~ $a4 (from tdomain’s shared memory) are copied to udomain’s shared memory, $a0 is skipped.
      • Call sbi_ecall_tee_domain_exit() to exit from the current tdomain.
        • The domain to switch to:
          • Switch to the previous domain
          • Switch to the use-define next domain.
          • Fallback to the root domain.
    • P.S. Domain switching only involves domain contexts save and restore. The mode is switched by mret in the trap handler.
Loading...
目錄