X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/5ae81164883c737f0204dc26beb7bb7488693a1d..f2b87dd63dc50a707ac102db7afb849b1f4f8db0:/aseg/firstrun.c diff --git a/aseg/firstrun.c b/aseg/firstrun.c index ca892ea..9589a13 100644 --- a/aseg/firstrun.c +++ b/aseg/firstrun.c @@ -1,21 +1,23 @@ #include #include #include +#include +#include "vga-overlay.h" +#include + +extern int _bss, _bssend; void __firstrun_start() { -/* - puts("Current USB state is: "); - puthex(pci_read16(0, 31, 2, 0xC0)); - puts(" "); - puthex(pci_read16(0, 31, 4, 0xC0)); - puts("\n"); - puts("Current SMI state is: "); - puthex(inl(0x830)); - puts("\n"); - puts("Current SMRAMC state is: "); - puthex(pci_read8(0, 0, 0, 0x70)); - puts("\n"); -*/ + unsigned char *bp; + smram_state_t smram; + + smram = smram_save_state(); + smram_tseg_set_state(SMRAM_TSEG_OPEN); + + for (bp = (void *)&_bss; (void *)bp < (void *)&_bssend; bp++) + *bp = 0; + + dologf("NetWatch running"); /* Try really hard to shut up USB_LEGKEY. */ pci_write16(0, 31, 2, 0xC0, pci_read16(0, 31, 2, 0xC0)); @@ -24,7 +26,10 @@ void __firstrun_start() { pci_write16(0, 31, 4, 0xC0, 0); /* Turn on the SMIs we want */ - outb(0x830, inb(0x830) | 0x40); + outb(0x830, inb(0x830) | ICH2_SMI_EN_SWSMI_TMR_EN); + outb(0x848, ICH2_DEVTRAP_EN_KBC_TRP_EN); smi_enable(); + + smram_restore_state(smram); }