Changeset 7f341820 in mainline for kernel/arch/mips32/include
- Timestamp:
- 2009-02-17T14:09:31Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 30e2bba
- Parents:
- 85156d3
- Location:
- kernel/arch/mips32/include
- Files:
-
- 4 edited
- 1 moved
-
asm.h (modified) (3 diffs)
-
atomic.h (modified) (2 diffs)
-
cpu.h (modified) (1 diff)
-
interrupt.h (modified) (1 diff)
-
smp/dorder.h (moved) (moved from kernel/arch/mips32/include/smp/order.h ) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips32/include/asm.h
r85156d3 r7f341820 56 56 uintptr_t v; 57 57 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 ); 59 63 60 64 return v; … … 64 68 extern void asm_delay_loop(uint32_t t); 65 69 extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, 66 uintptr_t entry);70 uintptr_t entry); 67 71 68 72 extern ipl_t interrupts_disable(void); … … 70 74 extern void interrupts_restore(ipl_t ipl); 71 75 extern ipl_t interrupts_read(void); 76 extern void asm_delay_loop(uint32_t t); 72 77 73 78 static inline void pio_write_8(ioport_t port, uint8_t v) -
kernel/arch/mips32/include/atomic.h
r85156d3 r7f341820 36 36 #define KERN_mips32_ATOMIC_H_ 37 37 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)) 40 40 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) 43 43 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) 46 46 47 47 /* Atomic addition of immediate value. … … 55 55 { 56 56 long tmp, v; 57 57 58 58 asm volatile ( 59 59 "1:\n" 60 60 " 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" 63 63 " 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 */ 65 65 " nop\n" 66 66 : "=&r" (tmp), "+m" (val->count), "=&r" (v) 67 67 : "r" (i), "i" (0) 68 ); 68 ); 69 70 return v; 71 } 69 72 73 static 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 70 88 return v; 71 89 } -
kernel/arch/mips32/include/cpu.h
r85156d3 r7f341820 43 43 uint32_t rev_num; 44 44 } cpu_arch_t; 45 45 46 46 #endif 47 47 -
kernel/arch/mips32/include/interrupt.h
r85156d3 r7f341820 39 39 #include <arch/exception.h> 40 40 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 43 45 44 46 extern function virtual_timer_fnc; -
kernel/arch/mips32/include/smp/dorder.h
r85156d3 r7f341820 27 27 */ 28 28 29 #ifndef KERN_mips32_ ORDER_H_30 #define KERN_mips32_ ORDER_H_29 #ifndef KERN_mips32_DORDER_H_ 30 #define KERN_mips32_DORDER_H_ 31 31 32 32 extern void ipi_broadcast_arch(int ipi);
Note:
See TracChangeset
for help on using the changeset viewer.
