Changeset 7f341820 in mainline for kernel/arch/mips32/include


Ignore:
Timestamp:
2009-02-17T14:09:31Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
30e2bba
Parents:
85156d3
Message:

mips32: basic SMP support

Location:
kernel/arch/mips32/include
Files:
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/include/asm.h

    r85156d3 r7f341820  
    5656        uintptr_t v;
    5757       
    58         asm volatile ("and %0, $29, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
     58        asm volatile (
     59                "and %0, $29, %1\n"
     60                : "=r" (v)
     61                : "r" (~(STACK_SIZE-1))
     62        );
    5963       
    6064        return v;
     
    6468extern void asm_delay_loop(uint32_t t);
    6569extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg,
    66                           uintptr_t entry);
     70    uintptr_t entry);
    6771
    6872extern ipl_t interrupts_disable(void);
     
    7074extern void interrupts_restore(ipl_t ipl);
    7175extern ipl_t interrupts_read(void);
     76extern void asm_delay_loop(uint32_t t);
    7277
    7378static inline void pio_write_8(ioport_t port, uint8_t v)
  • kernel/arch/mips32/include/atomic.h

    r85156d3 r7f341820  
    3636#define KERN_mips32_ATOMIC_H_
    3737
    38 #define atomic_inc(x)   ((void) atomic_add(x, 1))
    39 #define atomic_dec(x)   ((void) atomic_add(x, -1))
     38#define atomic_inc(x)  ((void) atomic_add(x, 1))
     39#define atomic_dec(x)  ((void) atomic_add(x, -1))
    4040
    41 #define atomic_postinc(x) (atomic_add(x, 1) - 1)
    42 #define atomic_postdec(x) (atomic_add(x, -1) + 1)
     41#define atomic_postinc(x)  (atomic_add(x, 1) - 1)
     42#define atomic_postdec(x)  (atomic_add(x, -1) + 1)
    4343
    44 #define atomic_preinc(x) atomic_add(x, 1)
    45 #define atomic_predec(x) atomic_add(x, -1)
     44#define atomic_preinc(x)  atomic_add(x, 1)
     45#define atomic_predec(x)  atomic_add(x, -1)
    4646
    4747/* Atomic addition of immediate value.
     
    5555{
    5656        long tmp, v;
    57 
     57       
    5858        asm volatile (
    5959                "1:\n"
    6060                "       ll %0, %1\n"
    61                 "       addu %0, %0, %3\n"      /* same as addi, but never traps on overflow */
    62                 "       move %2, %0\n"
     61                "       addu %0, %0, %3\n"  /* same as addi, but never traps on overflow */
     62                "       move %2, %0\n"
    6363                "       sc %0, %1\n"
    64                 "       beq %0, %4, 1b\n"       /* if the atomic operation failed, try again */
     64                "       beq %0, %4, 1b\n"   /* if the atomic operation failed, try again */
    6565                "       nop\n"
    6666                : "=&r" (tmp), "+m" (val->count), "=&r" (v)
    6767                : "r" (i), "i" (0)
    68                 );
     68        );
     69       
     70        return v;
     71}
    6972
     73static inline uint32_t test_and_set(atomic_t *val) {
     74        uint32_t tmp, v;
     75       
     76        asm volatile (
     77                "1:\n"
     78                "       ll %2, %1\n"
     79                "       bnez %2, 2f\n"
     80                "       li %0, %3\n"
     81                "       sc %0, %1\n"
     82                "       beqz %0, 1b\n"
     83                "2:\n"
     84                : "=&r" (tmp), "+m" (val->count), "=&r" (v)
     85                : "i" (1)
     86        );
     87       
    7088        return v;
    7189}
  • kernel/arch/mips32/include/cpu.h

    r85156d3 r7f341820  
    4343        uint32_t rev_num;
    4444} cpu_arch_t;
    45        
     45
    4646#endif
    4747
  • kernel/arch/mips32/include/interrupt.h

    r85156d3 r7f341820  
    3939#include <arch/exception.h>
    4040
    41 #define IVT_ITEMS 32
    42 #define IVT_FIRST 0
     41#define IVT_ITEMS  32
     42#define IVT_FIRST  0
     43
     44#define VECTOR_TLB_SHOOTDOWN_IPI  EXC_Int
    4345
    4446extern function virtual_timer_fnc;
  • kernel/arch/mips32/include/smp/dorder.h

    r85156d3 r7f341820  
    2727 */
    2828
    29 #ifndef KERN_mips32_ORDER_H_
    30 #define KERN_mips32_ORDER_H_
     29#ifndef KERN_mips32_DORDER_H_
     30#define KERN_mips32_DORDER_H_
    3131
    3232extern void ipi_broadcast_arch(int ipi);
Note: See TracChangeset for help on using the changeset viewer.