Return to BSD News archive
Newsgroups: comp.unix.bsd Path: sserve!manuel!munnari.oz.au!bruce.cs.monash.edu.au!andrewh From: andrewh@cs.monash.edu.au (Andrew Herbert) Subject: 386bsd cpu_reset() code - ideas? Message-ID: <andrewh.714725683@bruce.cs.monash.edu.au> Sender: news@bruce.cs.monash.edu.au (USENET News System) Organization: Computer Science, Monash University, Australia Date: Tue, 25 Aug 1992 06:54:43 GMT Lines: 37 The standard cpu_reset() in i386/i386/vm_machdep.c doesn't work on my Micronics i486/33-EISA system (it just hangs the system), so I've been trying to get this function to use the keyboard controller reboot trick. It ain't working though. :-( Can anyone suggest where I'm going astray? The machine hangs after displaying the expected diagnostics from cpu_reset(). cpu_reset() { int i; extern caddr_t vmmap; extern unsigned kbd_cmd(); /* defined in i386/isa/pccons.c */ printf("mapping RAM page zero\n"); pmap_enter(pmap_kernel(), vmmap, (vm_offset_t)0, VM_PROT_WRITE, TRUE); printf("writing RAM magic numbers\n"); /* write to physical addr 0x467 and 0x472 (see pmap.c) */ *((unsigned *)vmmap + 0x467) = 0xf000fff0; *((unsigned short *)vmmap + 0x472) = 0x1234; printf("setting cmos ram flag\n"); outb(0x70, 0x8f); /* write CMOS addr 8F */ outb(0x71, 0x5); /* write CMOS data 5 */ printf("asking keyboard controller to reset CPU\n"); /* tell keyboard controller to reset the CPU */ kbd_cmd(0xfe); printf("halting\n"); __asm__("cli; hlt"); } thanks, Andrew andrewh@molly.cs.monash.edu.au