aboutsummaryrefslogtreecommitdiffstats
path: root/bcopy32.inc
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 /bcopy32.inc
parent70cb38df625519fc0000063f753b0b1383e755af (diff)
downloadsyslinux.git-28b46657095873e98434959075b7717ec22117c1.tar.gz
syslinux.git-28b46657095873e98434959075b7717ec22117c1.tar.xz
syslinux.git-28b46657095873e98434959075b7717ec22117c1.zip
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.
Diffstat (limited to 'bcopy32.inc')
-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