mov si, IdtrLocation\r
o32 lidt [cs:si]\r
\r
+ mov si, EnableExecuteDisableLocation\r
+ cmp byte [si], 0\r
+ jz SkipEnableExecuteDisableBit\r
+\r
+ ;\r
+ ; Enable execute disable bit\r
+ ;\r
+ mov ecx, 0c0000080h ; EFER MSR number\r
+ rdmsr ; Read EFER\r
+ bts eax, 11 ; Enable Execute Disable Bit\r
+ wrmsr ; Write EFER\r
+\r
+SkipEnableExecuteDisableBit:\r
\r
mov di, DataSegmentLocation\r
mov edi, [di] ; Save long mode DS in edi\r