Index: Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S
===================================================================
--- Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S	(revision 15578)
+++ Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.S	(working copy)
@@ -37,225 +37,193 @@
     .byte   0x6a    #  push #VectorNum
     .byte   0
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception1Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   1
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception2Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   2
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception3Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   3
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception4Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   4
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception5Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   5
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception6Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   6
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception7Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   7
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception8Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   8
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception9Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   9
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception10Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   10
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception11Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   11
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception12Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   12
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception13Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   13
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception14Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   14
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception15Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   15
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception16Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   16
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception17Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   17
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception18Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   18
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception19Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   19
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception20Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   20
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception21Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   21
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception22Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   22
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception23Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   23
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception24Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   24
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception25Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   25
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception26Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   26
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception27Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   27
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception28Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   28
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception29Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   29
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception30Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   30
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
 Exception31Handle:
     .byte   0x6a    #  push #VectorNum
     .byte   31
     pushq   %rax
-    .byte   0x48, 0xB8
-    .quad   ASM_PFX(CommonInterruptEntry)
+    lea     ASM_PFX(CommonInterruptEntry)(%rip), %rax
     jmp     *%rax
     
 HookAfterStubHeaderBegin:
@@ -263,8 +231,7 @@
 VectorNum:
     .byte   0         # 0 will be fixed 
     pushq   %rax
-    .byte   0x48, 0xB8      # movq    ASM_PFX(HookAfterStubHeaderEnd), %rax
-    .quad   ASM_PFX(HookAfterStubHeaderEnd)
+    lea     ASM_PFX(HookAfterStubHeaderEnd)(%rip), %rax
     jmp     *%rax
 ASM_GLOBAL ASM_PFX(HookAfterStubHeaderEnd)
 ASM_PFX(HookAfterStubHeaderEnd):
@@ -274,7 +241,7 @@
     pushq   %rcx
     movq    8(%rax), %rcx
     pushq   %rax
-    movabsl ASM_PFX(mErrorCodeFlag), %eax
+    movl    ASM_PFX(mErrorCodeFlag)(%rip), %eax
     bt      %ecx, %eax
     popq    %rax
     jnc     NoErrorData
@@ -304,7 +271,7 @@
     cmp     $32, %ecx          # Intel reserved vector for exceptions?
     jae     NoErrorCode
     pushq   %rax
-    movabsl ASM_PFX(mErrorCodeFlag), %eax
+    movl    ASM_PFX(mErrorCodeFlag)(%rip), %eax
     bt      %ecx, %eax
     popq    %rax
     jc      CommonInterruptEntry_al_0000
@@ -553,7 +520,7 @@
 
 DoReturn:
     pushq   %rax
-    movabsq ASM_PFX(mDoFarReturnFlag), %rax
+    movq    ASM_PFX(mDoFarReturnFlag)(%rip), %rax
     cmpq    $0, %rax          # Check if need to do far return instead of IRET
     popq    %rax
     jz      DoIret
@@ -577,11 +544,10 @@
 # comments here for definition of address map
 ASM_GLOBAL ASM_PFX(AsmGetTemplateAddressMap)
 ASM_PFX(AsmGetTemplateAddressMap):
-
-        movabsq      $Exception0Handle, %rax
+        lea          Exception0Handle(%rip), %rax
         movq         %rax, (%rcx)
         movq         $(Exception1Handle - Exception0Handle), 0x08(%rcx)
-        movabsq      $HookAfterStubHeaderBegin, %rax
+        lea          HookAfterStubHeaderBegin(%rip), %rax
         movq         %rax, 0x10(%rcx)
         ret
 
