#------------------------------------------------------------------------------\r
#*\r
-#* Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+#* Copyright (c) 2006 - 2012, 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
#\r
xchgl (%esp), %ecx \r
\r
- #\r
- # Fall through to join main routine code\r
- # at ErrorCodeAndVectorOnStack\r
- #\r
-CommonInterruptEntry_al_0000:\r
- jmp CommonInterruptEntry_al_0000\r
-\r
ErrorCodeAndVectorOnStack:\r
pushl %ebp\r
movl %esp, %ebp\r
#; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;\r
movl %dr7, %eax\r
pushl %eax\r
-#; clear Dr7 while executing debugger itself\r
- xorl %eax, %eax\r
- movl %eax, %dr7\r
-\r
movl %dr6, %eax\r
pushl %eax\r
-#; insure all status bits in dr6 are clear...\r
- xorl %eax, %eax\r
- movl %eax, %dr6\r
-\r
movl %dr3, %eax\r
pushl %eax\r
movl %dr2, %eax\r
movl %esp, %edi\r
.byte 0x0f, 0x0ae, 0x07 #fxsave [edi]\r
\r
+#; UEFI calling convention for IA32 requires that Direction flag in EFLAGs is clear\r
+ cld\r
+\r
#; UINT32 ExceptionData;\r
pushl 8(%ebp)\r
\r
addl $512, %esp\r
\r
#; UINT32 Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;\r
- popl %eax\r
- movl %eax, %dr0\r
- popl %eax\r
- movl %eax, %dr1\r
- popl %eax\r
- movl %eax, %dr2\r
- popl %eax\r
- movl %eax, %dr3\r
-#; skip restore of dr6. We cleared dr6 during the context save.\r
- addl $4, %esp\r
- popl %eax\r
- movl %eax, %dr7\r
+#; Skip restoration of DRx registers to support in-circuit emualators\r
+#; or debuggers set breakpoint in interrupt/exception context\r
+ addl $24, %esp\r
\r
#; UINT32 Cr0, Cr1, Cr2, Cr3, Cr4;\r
popl %eax\r