Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1006 → Rev 1007

/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/interrupt.h
34,6 → 34,7
 
#define VECTOR_DECREMENTER 10
 
extern void start_decrementer(void);
extern void interrupt_init(void);
 
#endif
/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/include/context.h
33,7 → 33,7
# include <arch/types.h>
#endif
 
#define SP_DELTA 8
#define SP_DELTA 16
 
struct context {
__address sp;
/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/boot/boot.S
75,6 → 75,6
b main_bsp
 
.section K_DATA_START, "aw", @progbits
 
.space TEMP_STACK_SIZE
end_stack:
/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/dummy.s
47,4 → 47,4
b userspace
 
asm_delay_loop:
b asm_delay_loop
blr
/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();
}