shithub: riscv

Download patch

ref: 15c7d856bc499da0ae76d3ce9b12b952cfbe7609
parent: b5aab824886fa8f441291340bdd4e187c562ddd0
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Mon Sep 16 12:23:51 EDT 2013

apm: fix wrong segment load, zero segment registers

we loaded APMDSEG instead of APMDSEL into DS. (ouch!)

its not really clear why we loaded DS (wong) in the
first place as bios is supposed to do this. for the
machines where this worked it could have no effect
anyway because it was wrong so removing the DS load
and just zero all segment registers.

--- a/sys/src/9/pc/apmjump.s
+++ b/sys/src/9/pc/apmjump.s
@@ -9,19 +9,9 @@
 
 #define SSOVERRIDE	BYTE $0x36
 #define CSOVERRIDE	BYTE $0x2E
-#define RETF		BYTE $0xCB
 
 GLOBL	apmjumpstruct+0(SB), $8
 
-TEXT fortytwo(SB), $0
-	MOVL	$42, AX
-	RETF
-
-TEXT getcs(SB), $0
-	PUSHL	CS
-	POPL	AX
-	RET
-
 TEXT apmfarcall(SB), $0
 	/*
 	 * We call push and pop ourselves.
@@ -52,6 +42,7 @@
 	 * paranoia: zero the segments, since it's the
 	 * BIOS's responsibility to initialize them.
 	 * (trick picked up from Linux driver).
+	 */
 	PUSHL	DX
 	XORL	DX, DX
 	PUSHL	DX
@@ -63,10 +54,6 @@
 	PUSHL	DX
 	POPL	GS
 	POPL	DX
-	 */
-
-	PUSHL	$APMDSEG
-	POPL	DS
 
 	/*
 	 * The actual call.
--