/trunk/kernel/arch/sparc64/src/console.c |
---|
93,5 → 93,24 |
} |
} |
/** Acquire console back for kernel |
* |
*/ |
void arch_grab_console(void) |
{ |
#ifdef CONFIG_Z8530 |
z8530_grab(); |
#endif |
} |
/** Return console to userspace |
* |
*/ |
void arch_release_console(void) |
{ |
#ifdef CONFIG_Z8530 |
z8530_release(); |
#endif |
} |
/** @} |
*/ |
/trunk/kernel/arch/sparc64/src/sparc64.c |
---|
93,19 → 93,6 |
{ |
} |
/** Acquire console back for kernel |
* |
*/ |
void arch_grab_console(void) |
{ |
} |
/** Return console to userspace |
* |
*/ |
void arch_release_console(void) |
{ |
} |
/** Switch to userspace. */ |
void userspace(uspace_arg_t *kernel_uarg) |
{ |
/trunk/kernel/arch/sparc64/src/trap/interrupt.c |
---|
42,7 → 42,7 |
#include <ipc/sysipc.h> |
#include <arch/asm.h> |
#include <arch/barrier.h> |
#include <print.h> |
#include <genarch/kbd/z8530.h> |
/** Register Interrupt Level Handler. |
61,7 → 61,9 |
/* Reregister irq to be IPC-ready */ |
void irq_ipc_bind_arch(unative_t irq) |
{ |
/* TODO */ |
#ifdef CONFIG_Z8530 |
z8530_belongs_to_kernel = false; |
#endif |
} |
void interrupt(int n, istate_t *istate) |
82,9 → 84,14 |
* we cannot handle it by scheduling one of the level |
* interrupt traps. Call the interrupt handler directly. |
*/ |
if (z8530_belongs_to_kernel) |
z8530_interrupt(); |
else |
ipc_irq_send_notif(0); |
fhc_uart_reset(); |
z8530_interrupt(); |
break; |
#endif |
} |
/trunk/kernel/arch/sparc64/src/drivers/fhc.c |
---|
57,17 → 57,12 |
{ |
fhc = (void *) hw_map(FHC_UART_ADDR, PAGE_SIZE); |
(void) fhc[FHC_UART_ICLR]; |
fhc[FHC_UART_ICLR] = 0; |
(void) fhc[FHC_UART_IMAP]; |
fhc[FHC_UART_IMAP] = Z8530_INTRCV_DATA0; /* hardcoded for Simics simulation */ |
(void) fhc[FHC_UART_IMAP]; |
fhc[FHC_UART_IMAP] = 0x80000000; /* hardcoded for Simics simulation */ |
fhc[FHC_UART_IMAP] = 0x80000000; |
} |
void fhc_uart_reset(void) |
{ |
(void) fhc[FHC_UART_ICLR]; |
fhc[FHC_UART_ICLR] = 0; |
} |