-;\r
-; The following lines restore DR6 & DR7 before running C code. They are useful\r
-; when you want to enable hardware breakpoints in SMM.\r
-;\r
-; NOTE: These lines might not be appreciated in runtime since they might\r
-; conflict with OS debugging facilities. Turn them off in RELEASE.\r
-;\r
- mov rax, offset FeaturePcdGet (PcdCpuSmmDebug) ;Get absolute address. Avoid RIP relative addressing\r
- cmp byte ptr [rax], 0\r
- jz @1\r
-\r
- DB 48h, 8bh, 0dh ; mov rcx, [rip + disp32]\r
- DD SSM_DR6 - ($ + 4 - _SmiEntryPoint + 8000h)\r
- DB 48h, 8bh, 15h ; mov rdx, [rip + disp32]\r
- DD SSM_DR7 - ($ + 4 - _SmiEntryPoint + 8000h)\r
- mov dr6, rcx\r
- mov dr7, rdx\r
-@1:\r
- mov rcx, [rsp] ; rcx <- CpuIndex\r
- mov rax, SmiRendezvous ; rax <- absolute addr of SmiRedezvous\r