Changeset 7a0359b in mainline for kernel/arch/mips32
- Timestamp:
- 2010-07-02T15:42:19Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bbfdf62
- Parents:
- e3ee9b9
- Location:
- kernel/arch/mips32/include
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips32/include/asm.h
re3ee9b9 r7a0359b 38 38 #include <typedefs.h> 39 39 #include <config.h> 40 #include <trace.h> 40 41 41 static inline void cpu_sleep(void)42 NO_TRACE static inline void cpu_sleep(void) 42 43 { 43 /* Most of the simulators do not support */ 44 /* asm volatile ("wait"); */ 44 /* 45 * Unfortunatelly most of the simulators do not support 46 * 47 * asm volatile ( 48 * "wait" 49 * ); 50 * 51 */ 45 52 } 46 53 … … 52 59 * 53 60 */ 54 static inline uintptr_t get_stack_base(void)61 NO_TRACE static inline uintptr_t get_stack_base(void) 55 62 { 56 63 uintptr_t base; … … 65 72 } 66 73 67 extern void cpu_halt(void) __attribute__((noreturn)); 68 extern void asm_delay_loop(uint32_t t); 69 extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, 70 uintptr_t entry); 71 72 extern ipl_t interrupts_disable(void); 73 extern ipl_t interrupts_enable(void); 74 extern void interrupts_restore(ipl_t ipl); 75 extern ipl_t interrupts_read(void); 76 extern bool interrupts_disabled(void); 77 78 static inline void pio_write_8(ioport8_t *port, uint8_t v) 74 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t v) 79 75 { 80 76 *port = v; 81 77 } 82 78 83 static inline void pio_write_16(ioport16_t *port, uint16_t v)79 NO_TRACE static inline void pio_write_16(ioport16_t *port, uint16_t v) 84 80 { 85 81 *port = v; 86 82 } 87 83 88 static inline void pio_write_32(ioport32_t *port, uint32_t v)84 NO_TRACE static inline void pio_write_32(ioport32_t *port, uint32_t v) 89 85 { 90 86 *port = v; 91 87 } 92 88 93 static inline uint8_t pio_read_8(ioport8_t *port)89 NO_TRACE static inline uint8_t pio_read_8(ioport8_t *port) 94 90 { 95 91 return *port; 96 92 } 97 93 98 static inline uint16_t pio_read_16(ioport16_t *port)94 NO_TRACE static inline uint16_t pio_read_16(ioport16_t *port) 99 95 { 100 96 return *port; 101 97 } 102 98 103 static inline uint32_t pio_read_32(ioport32_t *port)99 NO_TRACE static inline uint32_t pio_read_32(ioport32_t *port) 104 100 { 105 101 return *port; 106 102 } 103 104 extern void cpu_halt(void) __attribute__((noreturn)); 105 extern void asm_delay_loop(uint32_t); 106 extern void userspace_asm(uintptr_t, uintptr_t, uintptr_t); 107 108 extern ipl_t interrupts_disable(void); 109 extern ipl_t interrupts_enable(void); 110 extern void interrupts_restore(ipl_t); 111 extern ipl_t interrupts_read(void); 112 extern bool interrupts_disabled(void); 107 113 108 114 #endif -
kernel/arch/mips32/include/atomic.h
re3ee9b9 r7a0359b 36 36 #define KERN_mips32_ATOMIC_H_ 37 37 38 #include <trace.h> 39 38 40 #define atomic_inc(x) ((void) atomic_add(x, 1)) 39 41 #define atomic_dec(x) ((void) atomic_add(x, -1)) … … 53 55 * 54 56 */ 55 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i) 57 NO_TRACE static inline atomic_count_t atomic_add(atomic_t *val, 58 atomic_count_t i) 56 59 { 57 60 atomic_count_t tmp; … … 76 79 } 77 80 78 static inline atomic_count_t test_and_set(atomic_t *val)81 NO_TRACE static inline atomic_count_t test_and_set(atomic_t *val) 79 82 { 80 83 atomic_count_t tmp; … … 98 101 } 99 102 100 static inline void atomic_lock_arch(atomic_t *val)103 NO_TRACE static inline void atomic_lock_arch(atomic_t *val) 101 104 { 102 105 do { -
kernel/arch/mips32/include/barrier.h
re3ee9b9 r7a0359b 27 27 */ 28 28 29 /** @addtogroup mips32 29 /** @addtogroup mips32 30 30 * @{ 31 31 */ … … 39 39 * TODO: implement true MIPS memory barriers for macros below. 40 40 */ 41 #define CS_ENTER_BARRIER() 42 #define CS_LEAVE_BARRIER() 41 #define CS_ENTER_BARRIER() asm volatile ("" ::: "memory") 42 #define CS_LEAVE_BARRIER() asm volatile ("" ::: "memory") 43 43 44 #define memory_barrier() 45 #define read_barrier() 46 #define write_barrier() 44 #define memory_barrier() asm volatile ("" ::: "memory") 45 #define read_barrier() asm volatile ("" ::: "memory") 46 #define write_barrier() asm volatile ("" ::: "memory") 47 47 48 48 #define smc_coherence(a) -
kernel/arch/mips32/include/cycle.h
re3ee9b9 r7a0359b 38 38 #include <arch/cp0.h> 39 39 #include <arch/interrupt.h> 40 #include <trace.h> 40 41 41 static inline uint64_t get_cycle(void)42 NO_TRACE static inline uint64_t get_cycle(void) 42 43 { 43 44 return ((uint64_t) count_hi << 32) + ((uint64_t) cp0_count_read()); -
kernel/arch/mips32/include/exception.h
re3ee9b9 r7a0359b 27 27 */ 28 28 29 /** @addtogroup mips32 29 /** @addtogroup mips32 30 30 * @{ 31 31 */ … … 38 38 #include <typedefs.h> 39 39 #include <arch/cp0.h> 40 #include <trace.h> 40 41 41 #define EXC_Int 42 #define EXC_Mod 43 #define EXC_TLBL 44 #define EXC_TLBS 45 #define EXC_AdEL 46 #define EXC_AdES 47 #define EXC_IBE 48 #define EXC_DBE 49 #define EXC_Sys 50 #define EXC_Bp 51 #define EXC_RI 52 #define EXC_CpU 53 #define EXC_Ov 54 #define EXC_Tr 55 #define EXC_VCEI 56 #define EXC_FPE 57 #define EXC_WATCH 58 #define EXC_VCED 42 #define EXC_Int 0 43 #define EXC_Mod 1 44 #define EXC_TLBL 2 45 #define EXC_TLBS 3 46 #define EXC_AdEL 4 47 #define EXC_AdES 5 48 #define EXC_IBE 6 49 #define EXC_DBE 7 50 #define EXC_Sys 8 51 #define EXC_Bp 9 52 #define EXC_RI 10 53 #define EXC_CpU 11 54 #define EXC_Ov 12 55 #define EXC_Tr 13 56 #define EXC_VCEI 14 57 #define EXC_FPE 15 58 #define EXC_WATCH 23 59 #define EXC_VCED 31 59 60 60 61 typedef struct istate { … … 82 83 uint32_t lo; 83 84 uint32_t hi; 84 85 uint32_t status; /* cp0_status */86 uint32_t epc; /* cp0_epc */87 uint32_t k1; /* We use it as thread-local pointer */85 86 uint32_t status; /* cp0_status */ 87 uint32_t epc; /* cp0_epc */ 88 uint32_t k1; /* We use it as thread-local pointer */ 88 89 } istate_t; 89 90 90 static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr) 91 NO_TRACE static inline void istate_set_retaddr(istate_t *istate, 92 uintptr_t retaddr) 91 93 { 92 94 istate->epc = retaddr; … … 94 96 95 97 /** Return true if exception happened while in userspace */ 96 static inline int istate_from_uspace(istate_t *istate)98 NO_TRACE static inline int istate_from_uspace(istate_t *istate) 97 99 { 98 100 return istate->status & cp0_status_um_bit; 99 101 } 100 static inline unative_t istate_get_pc(istate_t *istate) 102 103 NO_TRACE static inline unative_t istate_get_pc(istate_t *istate) 101 104 { 102 105 return istate->epc; 103 106 } 104 static inline unative_t istate_get_fp(istate_t *istate) 107 108 NO_TRACE static inline unative_t istate_get_fp(istate_t *istate) 105 109 { 106 return 0; /* FIXME */ 110 /* FIXME */ 111 112 return 0; 107 113 } 108 114 -
kernel/arch/mips32/include/faddr.h
re3ee9b9 r7a0359b 27 27 */ 28 28 29 /** @addtogroup mips32 29 /** @addtogroup mips32 30 30 * @{ 31 31 */ … … 38 38 #include <typedefs.h> 39 39 40 #define FADDR(fptr) 40 #define FADDR(fptr) ((uintptr_t) (fptr)) 41 41 42 42 #endif -
kernel/arch/mips32/include/mm/page.h
re3ee9b9 r7a0359b 37 37 38 38 #include <arch/mm/frame.h> 39 #include <trace.h> 39 40 40 41 #define PAGE_WIDTH FRAME_WIDTH … … 155 156 156 157 157 static inline unsigned int get_pt_flags(pte_t *pt, size_t i)158 NO_TRACE static inline unsigned int get_pt_flags(pte_t *pt, size_t i) 158 159 { 159 160 pte_t *p = &pt[i]; … … 168 169 } 169 170 170 static inline void set_pt_flags(pte_t *pt, size_t i, int flags)171 NO_TRACE static inline void set_pt_flags(pte_t *pt, size_t i, int flags) 171 172 { 172 173 pte_t *p = &pt[i]; -
kernel/arch/mips32/include/mm/tlb.h
re3ee9b9 r7a0359b 39 39 #include <arch/mm/asid.h> 40 40 #include <arch/exception.h> 41 #include <trace.h> 41 42 42 43 #define TLB_ENTRY_COUNT 48 … … 126 127 * Probe TLB for Matching Entry. 127 128 */ 128 static inline void tlbp(void)129 NO_TRACE static inline void tlbp(void) 129 130 { 130 131 asm volatile ("tlbp\n\t"); … … 136 137 * Read Indexed TLB Entry. 137 138 */ 138 static inline void tlbr(void)139 NO_TRACE static inline void tlbr(void) 139 140 { 140 141 asm volatile ("tlbr\n\t"); … … 145 146 * Write Indexed TLB Entry. 146 147 */ 147 static inline void tlbwi(void)148 NO_TRACE static inline void tlbwi(void) 148 149 { 149 150 asm volatile ("tlbwi\n\t"); … … 154 155 * Write Random TLB Entry. 155 156 */ 156 static inline void tlbwr(void)157 NO_TRACE static inline void tlbwr(void) 157 158 { 158 159 asm volatile ("tlbwr\n\t");
Note:
See TracChangeset
for help on using the changeset viewer.