Changeset 8965838e in mainline


Ignore:
Timestamp:
2006-03-15T12:21:56Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
97b64c9
Parents:
286e03d
Message:

ppc32: preemptive scheduling works now
FPU context saving disabled for now

Files:
10 edited

Legend:

Unmodified
Added
Removed
  • arch/ppc32/include/asm.h

    r286e03d r8965838e  
    121121        __address v;
    122122       
    123         __asm__ volatile ("and %0, %%r1, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
     123        __asm__ volatile ("and %0, %%sp, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
    124124       
    125125        return v;
    126126}
    127127
     128static inline void cpu_sleep(void)
     129{
     130}
     131
    128132void cpu_halt(void);
    129 void cpu_sleep(void);
    130133void asm_delay_loop(__u32 t);
    131134
  • arch/ppc32/include/context.h

    r286e03d r8965838e  
    3434#endif
    3535
    36 #define SP_DELTA        8
     36#define SP_DELTA        16
    3737
    3838struct context {
  • arch/ppc32/include/interrupt.h

    r286e03d r8965838e  
    3535#define VECTOR_DECREMENTER 10
    3636
     37extern void start_decrementer(void);
    3738extern void interrupt_init(void);
    3839
  • arch/ppc32/src/asm.S

    r286e03d r8965838e  
    3131.text
    3232
    33 .global cpu_sleep
    3433.global iret
    3534.global memsetb
    3635.global memcpy
    37 
    38 cpu_sleep:
    39         b cpu_sleep
    4036
    4137iret:
  • arch/ppc32/src/boot/boot.S

    r286e03d r8965838e  
    7676
    7777.section K_DATA_START, "aw", @progbits
    78        
     78
    7979        .space TEMP_STACK_SIZE
    8080end_stack:
  • arch/ppc32/src/dummy.s

    r286e03d r8965838e  
    4848
    4949asm_delay_loop:
    50         b asm_delay_loop
     50        blr
  • arch/ppc32/src/fpu_context.S

    r286e03d r8965838e  
    8181
    8282fpu_context_save:
    83         FPU_CONTEXT_STORE r3
    84        
    85         mffs fr0
    86         stfd fr0, OFFSET_FPSCR(r3)
     83//      FPU_CONTEXT_STORE r3
     84//     
     85//      mffs fr0
     86//      stfd fr0, OFFSET_FPSCR(r3)
    8787       
    8888        blr
    8989       
    9090fpu_context_restore:
    91         FPU_CONTEXT_LOAD r3
    92        
    93         lfd fr0, OFFSET_FPSCR(r3)
    94         mtfsf 7, fr0
     91//      FPU_CONTEXT_LOAD r3
     92//     
     93//      lfd fr0, OFFSET_FPSCR(r3)
     94//      mtfsf 7, fr0
    9595       
    9696        blr
  • arch/ppc32/src/interrupt.c

    r286e03d r8965838e  
    3434#include <print.h>
    3535
     36
     37void start_decrementer(void)
     38{
     39        asm volatile (
     40                "mtdec %0\n"
     41                :: "r" (1000)
     42        );
     43}
     44
     45
    3646static void exception_decrementer(int n, istate_t *istate)
    3747{
    3848        clock();
     49        start_decrementer();
    3950}
    4051
  • arch/ppc32/src/ppc32.c

    r286e03d r8965838e  
    3636{
    3737        /* Initialize dispatch table */
    38         interrupt_init();       
     38        interrupt_init();
     39       
     40        /* Start decrementer */
     41        start_decrementer();
    3942
    4043        ppc32_console_init();
     
    5861{
    5962}
     63
  • generic/src/proc/scheduler.c

    r286e03d r8965838e  
    284284        if (atomic_get(&haltstate))
    285285                halt();
    286 
     286       
    287287        if (THREAD) {
    288288                spinlock_lock(&THREAD->lock);
     
    296296                        spinlock_unlock(&THREAD->lock);
    297297                        interrupts_restore(THREAD->saved_context.ipl);
     298                       
    298299                        return;
    299300                }
     
    343344{
    344345        int priority;
    345 
     346       
    346347        ASSERT(CPU != NULL);
    347 
     348       
    348349        if (THREAD) {
    349350                /* must be run after the switch to scheduler stack */
Note: See TracChangeset for help on using the changeset viewer.