Rev 3386 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3386 | Rev 4153 | ||
|---|---|---|---|
| Line 34... | Line 34... | ||
| 34 | 34 | ||
| 35 | #ifndef KERN_mips32_ASM_H_ |
35 | #ifndef KERN_mips32_ASM_H_ |
| 36 | #define KERN_mips32_ASM_H_ |
36 | #define KERN_mips32_ASM_H_ |
| 37 | 37 | ||
| 38 | #include <arch/types.h> |
38 | #include <arch/types.h> |
| - | 39 | #include <typedefs.h> |
|
| 39 | #include <config.h> |
40 | #include <config.h> |
| 40 | 41 | ||
| 41 | 42 | ||
| 42 | static inline void cpu_sleep(void) |
43 | static inline void cpu_sleep(void) |
| 43 | { |
44 | { |
| Line 53... | Line 54... | ||
| 53 | */ |
54 | */ |
| 54 | static inline uintptr_t get_stack_base(void) |
55 | static inline uintptr_t get_stack_base(void) |
| 55 | { |
56 | { |
| 56 | uintptr_t v; |
57 | uintptr_t v; |
| 57 | 58 | ||
| - | 59 | asm volatile ( |
|
| - | 60 | "and %0, $29, %1\n" |
|
| - | 61 | : "=r" (v) |
|
| 58 | asm volatile ("and %0, $29, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1))); |
62 | : "r" (~(STACK_SIZE-1)) |
| - | 63 | ); |
|
| 59 | 64 | ||
| 60 | return v; |
65 | return v; |
| 61 | } |
66 | } |
| 62 | 67 | ||
| 63 | extern void cpu_halt(void); |
68 | extern void cpu_halt(void); |
| 64 | extern void asm_delay_loop(uint32_t t); |
69 | extern void asm_delay_loop(uint32_t t); |
| 65 | extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, |
70 | extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, |
| 66 | uintptr_t entry); |
71 | uintptr_t entry); |
| 67 | 72 | ||
| 68 | extern ipl_t interrupts_disable(void); |
73 | extern ipl_t interrupts_disable(void); |
| 69 | extern ipl_t interrupts_enable(void); |
74 | extern ipl_t interrupts_enable(void); |
| 70 | extern void interrupts_restore(ipl_t ipl); |
75 | extern void interrupts_restore(ipl_t ipl); |
| 71 | extern ipl_t interrupts_read(void); |
76 | extern ipl_t interrupts_read(void); |
| - | 77 | extern void asm_delay_loop(uint32_t t); |
|
| - | 78 | ||
| - | 79 | static inline void pio_write_8(ioport8_t *port, uint8_t v) |
|
| - | 80 | { |
|
| - | 81 | *port = v; |
|
| - | 82 | } |
|
| - | 83 | ||
| - | 84 | static inline void pio_write_16(ioport16_t *port, uint16_t v) |
|
| - | 85 | { |
|
| - | 86 | *port = v; |
|
| - | 87 | } |
|
| - | 88 | ||
| - | 89 | static inline void pio_write_32(ioport32_t *port, uint32_t v) |
|
| - | 90 | { |
|
| - | 91 | *port = v; |
|
| - | 92 | } |
|
| - | 93 | ||
| - | 94 | static inline uint8_t pio_read_8(ioport8_t *port) |
|
| - | 95 | { |
|
| - | 96 | return *port; |
|
| - | 97 | } |
|
| - | 98 | ||
| - | 99 | static inline uint16_t pio_read_16(ioport16_t *port) |
|
| - | 100 | { |
|
| - | 101 | return *port; |
|
| - | 102 | } |
|
| - | 103 | ||
| - | 104 | static inline uint32_t pio_read_32(ioport32_t *port) |
|
| - | 105 | { |
|
| - | 106 | return *port; |
|
| - | 107 | } |
|
| 72 | 108 | ||
| 73 | #endif |
109 | #endif |
| 74 | 110 | ||
| 75 | /** @} |
111 | /** @} |
| 76 | */ |
112 | */ |