@@ 763,6 763,7 @@ enum
CMpge,
CMcoherence,
CMi8253set,
+CMrealmode
};
static Cmdtab archctlmsg[] =
@@ 770,6 771,7 @@ static Cmdtab archctlmsg[] =
CMpge, "pge", 2,
CMcoherence, "coherence", 2,
CMi8253set, "i8253set", 2,
+CMrealmode, "realmode", 1,
};
static long
@@ 814,6 816,10 @@ archctlwrite(Chan*, void *a, long n, vlong)
else
cmderror(cb, "invalid i2853set ctl");
break;
+ case CMrealmode:
+ if(strcmp(cb->f[1], "realmode") == 0)
+ realmode();
+ break;
}
free(cb);
poperror();
@@ 7,7 7,7 @@
* Some machine instructions not handled by 8[al].
*/
#define OP16 BYTE $0x66
-#define DELAY BYTE $0xEB; BYTE $0x00 /* JMP .+2 */
+#define DELAY BYTE $0xEB; BYTE $0x00 /* JMP .+2 */
#define CPUID BYTE $0x0F; BYTE $0xA2 /* CPUID, argument in AX */
#define WRMSR BYTE $0x0F; BYTE $0x30 /* WRMSR, argument in AX/DX (lo/hi) */
#define RDMSR BYTE $0x0F; BYTE $0x32 /* RDMSR, result in AX/DX (lo/hi) */
@@ 827,3 827,7 @@ TEXT vectortable(SB), $0
CALL _strayintr(SB); BYTE $0xFD
CALL _strayintr(SB); BYTE $0xFE
CALL _strayintr(SB); BYTE $0xFF
+
+TEXT realmode(SB), $0
+ RET
+