Message ID | 20230808193145.8860-6-jo.vanbulck@cs.kuleuven.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | selftests/sgx: Fix compilation errors | expand |
On Tue, 2023-08-08 at 12:31 -0700, Jo Van Bulck wrote: > Add the "memory" clobber to the EMODPE and EACCEPT asm blocks to tell the > compiler the assembly code accesses to the secinfo struct. This ensures > the compiler treats the asm block as a memory barrier and the write to > secinfo will be visible to ENCLU. > > Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be> > --- > tools/testing/selftests/sgx/test_encl.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c > index c71dfbadd2d9..5b758eaf808c 100644 > --- a/tools/testing/selftests/sgx/test_encl.c > +++ b/tools/testing/selftests/sgx/test_encl.c > @@ -24,10 +24,11 @@ static void do_encl_emodpe(void *_op) > secinfo.flags = op->flags; > > asm volatile(".byte 0x0f, 0x01, 0xd7" > - : > + : /* no outputs */ > : "a" (EMODPE), > "b" (&secinfo), > - "c" (op->epc_addr)); > + "c" (op->epc_addr) > + : "memory" /* read from secinfo pointer */); > } > > static void do_encl_eaccept(void *_op) > @@ -42,7 +43,8 @@ static void do_encl_eaccept(void *_op) > : "=a" (rax) > : "a" (EACCEPT), > "b" (&secinfo), > - "c" (op->epc_addr)); > + "c" (op->epc_addr) > + : "memory" /* read from secinfo pointer */); > > op->ret = rax; > } Reviewed-by: Kai Huang <kai.huang@intel.com>
diff --git a/tools/testing/selftests/sgx/test_encl.c b/tools/testing/selftests/sgx/test_encl.c index c71dfbadd2d9..5b758eaf808c 100644 --- a/tools/testing/selftests/sgx/test_encl.c +++ b/tools/testing/selftests/sgx/test_encl.c @@ -24,10 +24,11 @@ static void do_encl_emodpe(void *_op) secinfo.flags = op->flags; asm volatile(".byte 0x0f, 0x01, 0xd7" - : + : /* no outputs */ : "a" (EMODPE), "b" (&secinfo), - "c" (op->epc_addr)); + "c" (op->epc_addr) + : "memory" /* read from secinfo pointer */); } static void do_encl_eaccept(void *_op) @@ -42,7 +43,8 @@ static void do_encl_eaccept(void *_op) : "=a" (rax) : "a" (EACCEPT), "b" (&secinfo), - "c" (op->epc_addr)); + "c" (op->epc_addr) + : "memory" /* read from secinfo pointer */); op->ret = rax; }
Add the "memory" clobber to the EMODPE and EACCEPT asm blocks to tell the compiler the assembly code accesses to the secinfo struct. This ensures the compiler treats the asm block as a memory barrier and the write to secinfo will be visible to ENCLU. Signed-off-by: Jo Van Bulck <jo.vanbulck@cs.kuleuven.be> --- tools/testing/selftests/sgx/test_encl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)