/kernel/trunk/generic/src/proc/scheduler.c |
283,7 → 283,7 |
|
if (atomic_get(&haltstate)) |
halt(); |
|
|
if (THREAD) { |
spinlock_lock(&THREAD->lock); |
#ifndef CONFIG_FPU_LAZY |
295,6 → 295,7 |
*/ |
spinlock_unlock(&THREAD->lock); |
interrupts_restore(THREAD->saved_context.ipl); |
|
return; |
} |
|
342,9 → 343,9 |
void scheduler_separated_stack(void) |
{ |
int priority; |
|
|
ASSERT(CPU != NULL); |
|
|
if (THREAD) { |
/* must be run after the switch to scheduler stack */ |
after_thread_ran(); |
/kernel/trunk/arch/ppc32/include/asm.h |
120,13 → 120,16 |
{ |
__address v; |
|
__asm__ volatile ("and %0, %%r1, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1))); |
__asm__ volatile ("and %0, %%sp, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1))); |
|
return v; |
} |
|
static inline void cpu_sleep(void) |
{ |
} |
|
void cpu_halt(void); |
void cpu_sleep(void); |
void asm_delay_loop(__u32 t); |
|
#endif |
/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/asm.S |
30,14 → 30,10 |
|
.text |
|
.global cpu_sleep |
.global iret |
.global memsetb |
.global memcpy |
|
cpu_sleep: |
b cpu_sleep |
|
iret: |
lwz r3, 144(sp) |
mtxer r3 |
/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(); |
} |
|
|