Ignore:
Timestamp:
2009-04-06T16:18:41Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
Children:
13a638d
Parents:
415d272
Message:

ia32, amd64: do not reboot via a triple fault (which is nasty), but use the i8042 controller to trigger CPU reset

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/drivers/i8042/i8042.c

    r415d272 r149d14e5  
    5151#define i8042_SET_COMMAND  0x60
    5252#define i8042_COMMAND      0x69
     53#define i8042_CPU_RESET    0xfe
    5354
    5455#define i8042_BUFFER_FULL_MASK  0x01
     
    9899        irq_register(&instance->irq);
    99100       
    100         /*
    101          * Clear input buffer.
    102          */
     101        /* Clear input buffer */
    103102        while (pio_read_8(&dev->status) & i8042_BUFFER_FULL_MASK)
    104103                (void) pio_read_8(&dev->data);
     
    107106}
    108107
     108/* Reset CPU by pulsing pin 0 */
     109void i8042_cpu_reset(i8042_t *dev)
     110{
     111        interrupts_disable();
     112       
     113        /* Clear input buffer */
     114        while (pio_read_8(&dev->status) & i8042_BUFFER_FULL_MASK)
     115                (void) pio_read_8(&dev->data);
     116       
     117        /* Reset CPU */
     118        pio_write_8(&dev->status, i8042_CPU_RESET);
     119}
     120
    109121/** @}
    110122 */
Note: See TracChangeset for help on using the changeset viewer.