X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/f2b87dd63dc50a707ac102db7afb849b1f4f8db0..83a025567a37236fd819b30d12e32828d8fd2dc4:/aseg/firstrun.c?ds=inline diff --git a/aseg/firstrun.c b/aseg/firstrun.c index 9589a13..e0e2904 100644 --- a/aseg/firstrun.c +++ b/aseg/firstrun.c @@ -7,6 +7,10 @@ extern int _bss, _bssend; +extern void timer_handler(smi_event_t ev); +extern void kbc_handler(smi_event_t ev); +extern void gbl_rls_handler(smi_event_t ev); + void __firstrun_start() { unsigned char *bp; smram_state_t smram; @@ -26,8 +30,17 @@ void __firstrun_start() { pci_write16(0, 31, 4, 0xC0, 0); /* Turn on the SMIs we want */ - outb(0x830, inb(0x830) | ICH2_SMI_EN_SWSMI_TMR_EN); - outb(0x848, ICH2_DEVTRAP_EN_KBC_TRP_EN); + smi_disable(); + + smi_register_handler(SMI_EVENT_FAST_TIMER, timer_handler); + smi_enable_event(SMI_EVENT_FAST_TIMER); + + smi_register_handler(SMI_EVENT_DEVTRAP_KBC, kbc_handler); + smi_enable_event(SMI_EVENT_DEVTRAP_KBC); + + smi_register_handler(SMI_EVENT_GBL_RLS, gbl_rls_handler); + smi_enable_event(SMI_EVENT_GBL_RLS); + smi_enable(); smram_restore_state(smram);