Ignore:
File:
1 edited

Legend:

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

    rdf7f5cea rb2fa1204  
    3636#include <interrupt.h>
    3737#include <arch/interrupt.h>
    38 #include <arch/istate.h>
    3938#include <typedefs.h>
    4039#include <arch.h>
     40#include <time/clock.h>
    4141#include <ipc/sysipc.h>
    4242#include <arch/drivers/pic.h>
     
    4646#include <log.h>
    4747
    48 static uint32_t decrementer_value;
    49 
    50 void decrementer_start(uint32_t val)
    51 {
    52         decrementer_value = val;
    53         decrementer_restart();
    54 }
    55 
    56 void decrementer_restart(void)
     48void start_decrementer(void)
    5749{
    5850        asm volatile (
    5951                "mtdec %[dec]\n"
    60                 :: [dec] "r" (decrementer_value)
     52                :: [dec] "r" (1000)
    6153        );
    6254}
     
    112104{
    113105        uint8_t inum;
    114 
     106       
    115107        while ((inum = pic_get_pending()) != 255) {
    116108                irq_t *irq = irq_dispatch_and_lock(inum);
     
    146138}
    147139
    148 static void exception_fp_unavailable(unsigned int n, istate_t *istate)
    149 {
    150 #ifdef CONFIG_FPU_LAZY
    151         scheduler_fpu_lazy_request();
    152         /*
    153          * Propagate MSR_FP from MSR back to istate's SRR1, which will become
    154          * the next MSR.
    155          */
    156         istate->srr1 |= msr_read() & MSR_FP;
    157 #else
    158         fault_if_from_uspace(istate, "FPU fault.");
    159         panic_badtrap(istate, n, "FPU fault.");
    160 #endif
    161 }
    162 
    163140static void exception_decrementer(unsigned int n, istate_t *istate)
    164141{
    165         decrementer_restart();
     142        start_decrementer();
    166143        clock();
    167144}
     
    176153        exc_register(VECTOR_EXTERNAL, "external", true,
    177154            exception_external);
    178         exc_register(VECTOR_FP_UNAVAILABLE, "fp_unavailable", true,
    179             exception_fp_unavailable);
    180155        exc_register(VECTOR_DECREMENTER, "timer", true,
    181156            exception_decrementer);
Note: See TracChangeset for help on using the changeset viewer.