• Reinette Chatre's avatar
    selftests/sgx: Introduce dynamic entry point · 7eb43701
    Reinette Chatre authored
    The test enclave (test_encl.elf) is built with two initialized
    Thread Control Structures (TCS) included in the binary. Both TCS are
    initialized with the same entry point, encl_entry, that correctly
    computes the absolute address of the stack based on the stack of each
    TCS that is also built into the binary.
    
    A new TCS can be added dynamically to the enclave and requires to be
    initialized with an entry point used to enter the enclave. Since the
    existing entry point, encl_entry, assumes that the TCS and its stack
    exists at particular offsets within the binary it is not able to handle
    a dynamically added TCS and its stack.
    
    Introduce a new entry point, encl_dyn_entry, that initializes the
    absolute address of that thread's stack to the address immediately
    preceding the TCS itself. It is now possible to dynamically add a
    contiguous memory region to the enclave with the new stack preceding
    the new TCS. With the new TCS initialized with encl_dyn_entry as entry
    point the absolute address of the stack is computed correctly on entry.
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Acked-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
    Link: https://lkml.kernel.org/r/93e9c420dedf5f773ba6965c18245bc7d62aca83.1652137848.git.reinette.chatre@intel.com
    7eb43701
test_encl_bootstrap.S 2.19 KB