lkml.org 
[lkml]   [2018]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [RFC PATCH v4 5/5] x86/vdso: Add __vdso_sgx_enter_enclave() to wrap SGX enclave transitions
Date
On 2018-12-14 03:01, Sean Christopherson wrote:
> +struct sgx_enclave_regs {
> + __u64 rdi;
> + __u64 rsi;
> + __u64 rdx;
> + __u64 r8;
> + __u64 r9;
> + __u64 r10;
> +};

This is fine, but why not just cover all 13 normal registers that are
not used by SGX?

Minor comments below.

> +/**
> + * struct sgx_enclave_exception - structure to pass register in/out of enclave

Typo in struct name.

> + * by way of __vdso_sgx_enter_enclave
> + *
> + * @rdi: value of %rdi, loaded/saved on enter/exit
> + * @rsi: value of %rsi, loaded/saved on enter/exit
> + * @rdx: value of %rdx, loaded/saved on enter/exit
> + * @r8: value of %r8, loaded/saved on enter/exit
> + * @r9: value of %r9, loaded/saved on enter/exit
> + * @r10: value of %r10, loaded/saved on enter/exit
> + */

> + /* load leaf, TCS and AEP for ENCLU */
> + mov %edi, %eax
> + mov %rsi, %rbx
> + lea 1f(%rip), %rcx

If you move this below the jump, you can use %rcx for @regs

> +
> + /* optionally copy @regs to registers */
> + test %rdx, %rdx
> + je 1f
> +
> + mov %rdx, %r11
> + mov RDI(%r11), %rdi
> + mov RSI(%r11), %rsi
> + mov RDX(%r11), %rdx
> + mov R8(%r11), %r8
> + mov R9(%r11), %r9
> + mov R10(%r11), %r10
> +
> +1: enclu
> +
> + /* ret = 0 */
> + xor %eax, %eax
> +
> + /* optionally copy registers to @regs */
> + mov -0x8(%rsp), %r11
> + test %r11, %r11
> + je 2f
> +
> + mov %rdi, RDI(%r11)
> + mov %rsi, RSI(%r11)
> + mov %rdx, RDX(%r11)
> + mov %r8, R8(%r11)
> + mov %r9, R9(%r11)
> + mov %r10, R10(%r11)

Here you can use %rax for @regs and clear it at the end.

> +2: pop %rbx
> + pop %r12
> + pop %r13
> + pop %r14
> + pop %r15
> + pop %rbp
> + ret

x86-64 ABI requires that you call CLD here (enclave may set it).

--
Jethro Beekman | Fortanix

[unhandled content-type:application/pkcs7-signature]
\
 
 \ /
  Last update: 2018-12-14 10:56    [W:0.061 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site