//kernel/trunk/arch/ppc32/src/fpu_context.S |
80,19 → 80,19 |
.endm |
|
fpu_context_save: |
FPU_CONTEXT_STORE r3 |
// FPU_CONTEXT_STORE r3 |
// |
// mffs fr0 |
// stfd fr0, OFFSET_FPSCR(r3) |
|
mffs fr0 |
stfd fr0, OFFSET_FPSCR(r3) |
|
blr |
|
fpu_context_restore: |
FPU_CONTEXT_LOAD r3 |
// FPU_CONTEXT_LOAD r3 |
// |
// lfd fr0, OFFSET_FPSCR(r3) |
// mtfsf 7, fr0 |
|
lfd fr0, OFFSET_FPSCR(r3) |
mtfsf 7, fr0 |
|
blr |
|
fpu_init: |
//kernel/trunk/arch/ppc32/src/ppc32.c |
35,7 → 35,10 |
void arch_pre_mm_init(void) |
{ |
/* Initialize dispatch table */ |
interrupt_init(); |
interrupt_init(); |
|
/* Start decrementer */ |
start_decrementer(); |
|
ppc32_console_init(); |
cuda_init(); |
57,3 → 60,4 |
void calibrate_delay_loop(void) |
{ |
} |
|
//kernel/trunk/arch/ppc32/src/interrupt.c |
33,9 → 33,20 |
#include <time/clock.h> |
#include <print.h> |
|
|
void start_decrementer(void) |
{ |
asm volatile ( |
"mtdec %0\n" |
:: "r" (1000) |
); |
} |
|
|
static void exception_decrementer(int n, istate_t *istate) |
{ |
clock(); |
start_decrementer(); |
} |
|
|