1 IMPLEMENTATION[amd64 && vmx]:
6 asm volatile("vmxoff");
9 IMPLEMENTATION[amd64 && !vmx]:
15 IMPLEMENTATION[amd64]:
18 #include "processor.h"
21 void __attribute__ ((noreturn))
26 // i8042: store the next byte at port 0x60 as command byte
27 while (Io::in8 (0x64) & 0x2)
29 Io::out8_p (0x60, 0x64);
31 // i8042 command byte (PS/2-compatible mode):
32 // b0=0 ... no IRQ 1 is generated when data available in input buffer
33 // b1=0 ... no IRQ 1 is generated when mouse data available in input buffer
34 // b2=1 ... set SYS flag in status register -- tells POST to perform
35 // "warm boot" tests/initiailization
37 // b4=0 ... keyboard interface enabled
38 // b5=0 ... auxillary PS/2 device (mouse) interface enabled
39 // b6=0 ... translation disabled -- data appears at input buffer exactly
40 // as read from keyboard
42 while (Io::in8 (0x64) & 0x2)
44 Io::out8_p (0x4, 0x60);
46 // i8042: pulse output port with 1110b
47 // b0=0 ... reset computer
48 // b1=1 ... set gate A20
49 // b2=1 ... pull mouse data low
50 // b3=1 ... pull mouse clock low
51 while (Io::in8 (0x64) & 0x2)
53 Io::out8_p (0xfe,0x64);