On Tue, Oct 08, 2019 at 09:18:45AM +0200, Borislav Petkov wrote:
> On Mon, Oct 07, 2019 at 09:04:05PM -0700, Sean Christopherson wrote:
> > > BIT(30)
> > 
> > This is intentionally open coded so that it can be stringified in asm.
> 
> It stringifies just fine with the BIT() macro too:
> 
> # 187 "arch/x86/kernel/cpu/sgx/encls.h" 1
>         1: .byte 0x0f, 0x01, 0xcf;
>         2:
> .section .fixup,"ax"
> 3: orl $((((1UL))) << (30)),%eax
>    jmp 2b
> .previous
> 
> and the resulting object:
> 
> Disassembly of section .fixup:
> 
> 0000000000000000 <.fixup>:
>    0:   0d 00 00 00 40          or     $0x40000000,%eax
>    5:   e9 00 00 00 00          jmpq   a <__addressable_sgx_free_page107+0x2>

Hmm, I get assembler errors using gcc 5.4.0

  linux/arch/x86/kernel/cpu/sgx/encls.h: Assembler messages:
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: junk `UL)))<<(30))' after 
expression
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: junk `UL)))<<(30))' after 
expression
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: missing ')'
  linux/arch/x86/kernel/cpu/sgx/encls.h:207: Error: junk `UL)))<<(30))' after 
expression
  linux/scripts/Makefile.build:265: recipe for target 
'arch/x86/kernel/cpu/sgx/encls.o' failed

Reply via email to