outb(c, DEBUG_PORT+SEROFF_DATA);
}
-// Write a character to the serial port.
+// Make sure all serial port writes have been completely sent.
static void
debug_serial_flush()
{
static void
putc(u16 action, char c)
{
- if (CONFIG_DEBUG_LEVEL) {
+ if (CONFIG_DEBUG_LEVEL && (CONFIG_SCREEN_AND_DEBUG || !action)) {
if (! CONFIG_COREBOOT)
// Send character to debug port.
outb(c, PORT_BIOS_DEBUG);
dprintf(1, " a=%08x b=%08x c=%08x d=%08x ds=%04x es=%04x ss=%04x\n"
, regs->eax, regs->ebx, regs->ecx, regs->edx
, regs->ds, regs->es, GET_SEG(SS));
- dprintf(1, " si=%08x di=%08x bp=%08x r=%08x cs=%04x ip=%04x f=%04x\n"
- , regs->esi, regs->edi, regs->ebp, (u32)regs
- , regs->cs, regs->ip, regs->flags);
+ dprintf(1, " si=%08x di=%08x bp=%08x sp=%08x cs=%04x ip=%04x f=%04x\n"
+ , regs->esi, regs->edi, regs->ebp, (u32)®s[1]
+ , regs->code.seg, regs->code.offset, regs->flags);
}
// Report entry to an Interrupt Service Routine (ISR).