Пример #1
0
void interrupt_init() {
    int i;
    pic_init(32, 40);
    for (i = 32; i < 48; i++) {
        interrupt_disable(i);
        interrupt_acknowledge(i);
    }
    for (i = 0; i < 32; i++) {
        interrupt_handler_table[i] = unknown_exception;
        interrupt_spurious[i] = 0;
        interrupt_count[i] = 0;
    }
    for (i = 32; i < 48; i++) {
        interrupt_handler_table[i] = unknown_hardware;
        interrupt_spurious[i] = 0;
        interrupt_count[i] = 0;
    }

    // Wire vector index 14 to pagefault handler
    interrupt_handler_table[14] = exception_handle_pagefault;

    interrupt_unblock();

    console_printf("interrupt: ready\n");
}
Пример #2
0
void
interrupt_handle(void)
{
    ps_chardevice_t* device;
    ps_cdev_handle_irq(&serial_device, 0);
    interrupt_acknowledge();
}
Пример #3
0
void pre_init(void)
{
    /* Initialise the UART */
    printf("Initialising UART driver\n");
    if(exynos_serial_init(DEV_ID, (void *) vaddr, NULL, NULL, &serial_device)){
        printf("Failed to initialise UART\n");
        while(1);
    }
    serial_configure(&serial_device, BAUD_RATE, 8, PARITY_NONE, 1);
    serial_device.flags &= ~SERIAL_AUTO_CR;

    /* Prime semaphore */
    read_sem_wait();

    /* Register for IRQs */
    interrupt_acknowledge();
}
Пример #4
0
void
interrupt_handle()
{
    ps_cdev_handle_irq(&serial_device, 0);
    interrupt_acknowledge();
}
Пример #5
0
void interrupt_handler(int i, int code) {
    last_interrupt = i;
    (interrupt_handler_table[i]) (i, code);
    interrupt_acknowledge(i);
    interrupt_count[i]++;
}