summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2007-11-04 16:34:38 -0800
committerH. Peter Anvin <hpa@zytor.com>2007-11-04 16:34:38 -0800
commit28b46657095873e98434959075b7717ec22117c1 (patch)
tree9d703a162f6068176c3eaa7c19c5756b961b613d
parent70cb38df625519fc0000063f753b0b1383e755af (diff)
downloadsyslinux-28b46657095873e98434959075b7717ec22117c1.tar.gz
Setting cr0 requires a jmp to synchronize on 386/486
The 386 and 486 requires a jmp after any setting of cr0. It can be a near jmp, but those processors do not correctly synchronize without it. We have jmps after setting cr0 in all spots except one, so make that happen correctly.
-rw-r--r--bcopy32.inc3
1 files changed, 2 insertions, 1 deletions
diff --git a/bcopy32.inc b/bcopy32.inc
index 87190d8e..4df5e435 100644
--- a/bcopy32.inc
+++ b/bcopy32.inc
@@ -532,7 +532,8 @@ trampoline_to_pm:
mov eax,cr0
or al,1
mov cr0,eax ; Enter protected mode
- mov ax,PM_DS32 ; 32-bit data segment selector
+ jmp .next ; Near jump to synchronize on 386/486
+.next: mov ax,PM_DS32 ; 32-bit data segment selector
mov es,ax
mov ds,ax
mov ss,ax