memtest86plus/memtest-intelmac-3.diff
2007-10-24 17:20:26 +00:00

57 lines
1.5 KiB
Diff

diff -urpN memtest86+-1.70/setup.S.mactel memtest86+-1.70/setup.S
--- memtest86+-1.70/setup.S.mactel 2007-10-24 13:10:59.000000000 -0400
+++ memtest86+-1.70/setup.S 2007-10-24 13:12:26.000000000 -0400
@@ -29,6 +29,33 @@ start:
lgdt gdt_48 - start # load gdt with whatever appropriate
# that was painless, now we enable A20
+# start from grub-a20.patch
+ /*
+ * try to switch gateA20 using PORT92, the "Fast A20 and Init"
+ * register
+ */
+ mov $0x92, %dx
+ inb %dx, %al
+ /* skip the port92 code if it's unimplemented (read returns 0xff) */
+ cmpb $0xff, %al
+ jz alt_a20_done
+
+ /* set or clear bit1, the ALT_A20_GATE bit */
+ movb 4(%esp), %ah
+ testb %ah, %ah
+ jz alt_a20_cont1
+ orb $2, %al
+ jmp alt_a20_cont2
+alt_a20_cont1:
+ and $0xfd, %al
+
+ /* clear the INIT_NOW bit; don't accidently reset the machine */
+alt_a20_cont2:
+ and $0xfe, %al
+ outb %al, %dx
+
+alt_a20_done:
+# end from grub-a20.patch
call empty_8042
@@ -67,6 +94,9 @@ data32 ljmp $KERNEL_CS, $(TSTLOAD <<4) #
empty_8042:
call delay
inb $0x64, %al # 8042 status port
+ cmpb $0xff, %al # from grub-a20-patch, skip if not impl
+ jz empty_8042_ret
+
testb $1, %al # output buffer?
jz no_output
call delay
@@ -76,6 +106,7 @@ empty_8042:
no_output:
testb $2, %al # is input buffer full?
jnz empty_8042 # yes - loop
+empty_8042_ret:
ret
#
# Delay is needed after doing i/o
diff -urpN memtest86+-1.70/memsize.c.mactel memtest86+-1.70/memsize.c