X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/8e6328ba94e7dadaef31a6186ba6d4437e1f06b3..8ba7e5b28a7f23ebf2423df41379516c8cbac6b5:/aseg-paging/firstrun.c?ds=sidebyside diff --git a/aseg-paging/firstrun.c b/aseg-paging/firstrun.c index 649583b..efa0600 100644 --- a/aseg-paging/firstrun.c +++ b/aseg-paging/firstrun.c @@ -5,7 +5,9 @@ #include #include "vga-overlay.h" #include +#include #include "../net/net.h" +#include extern int _bss, _bssend; @@ -13,19 +15,15 @@ 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; +extern pci_driver_t *drivers[]; + +void smi_init() { smram_state_t smram; + pci_driver_t **driver; smram = smram_save_state(); smram_tseg_set_state(SMRAM_TSEG_OPEN); -/* - for (bp = (void *)&_bss; (void *)bp < (void *)&_bssend; bp++) - *bp = 0; - - vga_flush_imm(0); -*/ - + outputf("NetWatch running"); /* Try really hard to shut up USB_LEGKEY. */ @@ -36,19 +34,32 @@ void __firstrun_start() { /* Turn on the SMIs we want */ smi_disable(); - /* eth_init(); + crc32_init(); + + /* After everything is initialized, load drivers. */ + for (driver = drivers; *driver; driver++) + { + outputf("Probing driver: %s", (*driver)->name); + if (pci_probe_driver(*driver)) + output("Found a card"); + } + outputf("Driver probe complete"); + + /* Load in fonts. */ + text_init(); + 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(); vga_flush_imm(1);