Changes in kernel/arch/mips32/include/asm.h [7a0359b:d99c1d2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/mips32/include/asm.h
r7a0359b rd99c1d2 27 27 */ 28 28 29 /** @addtogroup mips32 29 /** @addtogroup mips32 30 30 * @{ 31 31 */ … … 38 38 #include <typedefs.h> 39 39 #include <config.h> 40 #include <trace.h>41 40 42 NO_TRACE static inline void cpu_sleep(void) 41 42 static inline void cpu_sleep(void) 43 43 { 44 /* 45 * Unfortunatelly most of the simulators do not support 46 * 47 * asm volatile ( 48 * "wait" 49 * ); 50 * 51 */ 44 /* Most of the simulators do not support */ 45 /* asm volatile ("wait"); */ 52 46 } 53 47 54 48 /** Return base address of current stack 55 * 49 * 56 50 * Return the base address of the current stack. 57 51 * The stack is assumed to be STACK_SIZE bytes long. 58 52 * The stack must start on page boundary. 59 *60 53 */ 61 NO_TRACEstatic inline uintptr_t get_stack_base(void)54 static inline uintptr_t get_stack_base(void) 62 55 { 63 uintptr_t base;56 uintptr_t v; 64 57 65 58 asm volatile ( 66 "and % [base], $29, %[mask]\n"67 : [base] "=r" (base)68 : [mask] "r" (~(STACK_SIZE -1))59 "and %0, $29, %1\n" 60 : "=r" (v) 61 : "r" (~(STACK_SIZE-1)) 69 62 ); 70 63 71 return base;64 return v; 72 65 } 73 66 74 NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t v) 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 void asm_delay_loop(uint32_t t); 77 78 static inline void pio_write_8(ioport8_t *port, uint8_t v) 75 79 { 76 *port = v; 80 *port = v; 77 81 } 78 82 79 NO_TRACEstatic inline void pio_write_16(ioport16_t *port, uint16_t v)83 static inline void pio_write_16(ioport16_t *port, uint16_t v) 80 84 { 81 *port = v; 85 *port = v; 82 86 } 83 87 84 NO_TRACEstatic inline void pio_write_32(ioport32_t *port, uint32_t v)88 static inline void pio_write_32(ioport32_t *port, uint32_t v) 85 89 { 86 *port = v; 90 *port = v; 87 91 } 88 92 89 NO_TRACEstatic inline uint8_t pio_read_8(ioport8_t *port)93 static inline uint8_t pio_read_8(ioport8_t *port) 90 94 { 91 95 return *port; 92 96 } 93 97 94 NO_TRACEstatic inline uint16_t pio_read_16(ioport16_t *port)98 static inline uint16_t pio_read_16(ioport16_t *port) 95 99 { 96 100 return *port; 97 101 } 98 102 99 NO_TRACEstatic inline uint32_t pio_read_32(ioport32_t *port)103 static inline uint32_t pio_read_32(ioport32_t *port) 100 104 { 101 105 return *port; 102 106 } 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);113 107 114 108 #endif
Note:
See TracChangeset
for help on using the changeset viewer.