XCODE5 doesn't support absolute addressing in the assembly code.
This change uses lea instruction to get the address.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
-; Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+; Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
; This program and the accompanying materials\r
; are licensed and made available under the terms and conditions of the BSD License\r
; which accompanies this distribution. The full text of the license may be found at\r
; This program and the accompanying materials\r
; are licensed and made available under the terms and conditions of the BSD License\r
; which accompanies this distribution. The full text of the license may be found at\r
;\r
mov rax, dword 0x10 ; load long mode selector\r
shl rax, 32\r
;\r
mov rax, dword 0x10 ; load long mode selector\r
shl rax, 32\r
- mov r9, ReloadCS ;Assume the ReloadCS is under 4G\r
+ lea r9, [ReloadCS] ;Assume the ReloadCS is under 4G\r
or rax, r9\r
push rax\r
;\r
or rax, r9\r
push rax\r
;\r
; save the 32-bit function entry and the return address into stack which will be\r
; retrieve in compatibility mode.\r
;\r
; save the 32-bit function entry and the return address into stack which will be\r
; retrieve in compatibility mode.\r
;\r
- mov rax, ReturnBack ;Assume the ReloadCS is under 4G\r
+ lea rax, [ReturnBack] ;Assume the ReloadCS is under 4G\r
shl rax, 32\r
or rax, rcx\r
push rax\r
shl rax, 32\r
or rax, rcx\r
push rax\r
;\r
mov rcx, dword 0x8 ; load compatible mode selector\r
shl rcx, 32\r
;\r
mov rcx, dword 0x8 ; load compatible mode selector\r
shl rcx, 32\r
- mov rdx, Compatible ; assume address < 4G\r
+ lea rdx, [Compatible] ; assume address < 4G\r
or rcx, rdx\r
push rcx\r
retf\r
or rcx, rdx\r
push rcx\r
retf\r
;\r
pop r9 ; get CS\r
shl r9, 32 ; rcx[32..47] <- Cs\r
;\r
pop r9 ; get CS\r
shl r9, 32 ; rcx[32..47] <- Cs\r
or rcx, r9\r
push rcx\r
retf\r
or rcx, r9\r
push rcx\r
retf\r