Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/interrupt.c

    r9d58539 r4b0206c  
    3535#include <arch/interrupt.h>
    3636#include <print.h>
     37#include <log.h>
    3738#include <debug.h>
    3839#include <panic.h>
     
    4445#include <mm/as.h>
    4546#include <arch.h>
    46 #include <arch/asm.h>
    4747#include <proc/scheduler.h>
    4848#include <proc/thread.h>
     
    5454#include <symtab.h>
    5555#include <stacktrace.h>
     56#include <smp/smp_call.h>
    5657
    5758/*
     
    6667void istate_decode(istate_t *istate)
    6768{
    68         printf("cs =%0#18" PRIx64 "\trip=%0#18" PRIx64 "\t"
     69        log_printf("cs =%0#18" PRIx64 "\trip=%0#18" PRIx64 "\t"
    6970            "rfl=%0#18" PRIx64 "\terr=%0#18" PRIx64 "\n",
    7071            istate->cs, istate->rip, istate->rflags, istate->error_word);
    7172       
    7273        if (istate_from_uspace(istate))
    73                 printf("ss =%0#18" PRIx64 "\n", istate->ss);
    74        
    75         printf("rax=%0#18" PRIx64 "\trbx=%0#18" PRIx64 "\t"
     74                log_printf("ss =%0#18" PRIx64 "\n", istate->ss);
     75       
     76        log_printf("rax=%0#18" PRIx64 "\trbx=%0#18" PRIx64 "\t"
    7677            "rcx=%0#18" PRIx64 "\trdx=%0#18" PRIx64 "\n",
    7778            istate->rax, istate->rbx, istate->rcx, istate->rdx);
    7879       
    79         printf("rsi=%0#18" PRIx64 "\trdi=%0#18" PRIx64 "\t"
     80        log_printf("rsi=%0#18" PRIx64 "\trdi=%0#18" PRIx64 "\t"
    8081            "rbp=%0#18" PRIx64 "\trsp=%0#18" PRIx64 "\n",
    8182            istate->rsi, istate->rdi, istate->rbp,
     
    8384            (uintptr_t) &istate->rsp);
    8485       
    85         printf("r8 =%0#18" PRIx64 "\tr9 =%0#18" PRIx64 "\t"
     86        log_printf("r8 =%0#18" PRIx64 "\tr9 =%0#18" PRIx64 "\t"
    8687            "r10=%0#18" PRIx64 "\tr11=%0#18" PRIx64 "\n",
    8788            istate->r8, istate->r9, istate->r10, istate->r11);
    8889       
    89         printf("r12=%0#18" PRIx64 "\tr13=%0#18" PRIx64 "\t"
     90        log_printf("r12=%0#18" PRIx64 "\tr13=%0#18" PRIx64 "\t"
    9091            "r14=%0#18" PRIx64 "\tr15=%0#18" PRIx64 "\n",
    9192            istate->r12, istate->r13, istate->r14, istate->r15);
     
    161162        tlb_shootdown_ipi_recv();
    162163}
     164
     165static void arch_smp_call_ipi_recv(unsigned int n, istate_t *istate)
     166{
     167        trap_virtual_eoi();
     168        smp_call_ipi_recv();
     169}
    163170#endif
    164171
     
    193200                 */
    194201#ifdef CONFIG_DEBUG
    195                 printf("cpu%u: spurious interrupt (inum=%u)\n", CPU->id, inum);
     202                log(LF_ARCH, LVL_DEBUG, "cpu%u: spurious interrupt (inum=%u)",
     203                    CPU->id, inum);
    196204#endif
    197205        }
     
    214222        }
    215223       
    216         exc_register(0, "de_fault", true, (iroutine_t) de_fault);
    217         exc_register(7, "nm_fault", true, (iroutine_t) nm_fault);
    218         exc_register(12, "ss_fault", true, (iroutine_t) ss_fault);
    219         exc_register(13, "gp_fault", true, (iroutine_t) gp_fault);
     224        exc_register(VECTOR_DE, "de_fault", true, (iroutine_t) de_fault);
     225        exc_register(VECTOR_NM, "nm_fault", true, (iroutine_t) nm_fault);
     226        exc_register(VECTOR_SS, "ss_fault", true, (iroutine_t) ss_fault);
     227        exc_register(VECTOR_GP, "gp_fault", true, (iroutine_t) gp_fault);
    220228       
    221229#ifdef CONFIG_SMP
    222230        exc_register(VECTOR_TLB_SHOOTDOWN_IPI, "tlb_shootdown", true,
    223231            (iroutine_t) tlb_shootdown_ipi);
     232        exc_register(VECTOR_SMP_CALL_IPI, "smp_call", true,
     233                (iroutine_t) arch_smp_call_ipi_recv);
    224234#endif
    225235}
Note: See TracChangeset for help on using the changeset viewer.