Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
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 | */ |