Rev 2179 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2179 | Rev 2190 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | 34 | ||
35 | #ifndef KERN_arm32_ASM_H_ |
35 | #ifndef KERN_arm32_ASM_H_ |
36 | #define KERN_arm32_ASM_H_ |
36 | #define KERN_arm32_ASM_H_ |
37 | 37 | ||
38 | #include <arch/types.h> |
38 | #include <arch/types.h> |
- | 39 | #include <arch/stack.h> |
|
- | 40 | #include <config.h> |
|
39 | 41 | ||
40 | static inline void cpu_sleep(void) |
42 | static inline void cpu_sleep(void) |
41 | { |
43 | { |
42 | /* TODO */ |
44 | // not implemented on gxemul |
43 | } |
45 | } |
44 | 46 | ||
45 | /** Return base address of current stack |
47 | /** Return base address of current stack |
46 | * |
48 | * |
47 | * Return the base address of the current stack. |
49 | * Return the base address of the current stack. |
48 | * The stack is assumed to be STACK_SIZE bytes long. |
50 | * The stack is assumed to be STACK_SIZE bytes long. |
49 | * The stack must start on page boundary. |
51 | * The stack must start on page boundary. |
50 | */ |
52 | */ |
51 | static inline uintptr_t get_stack_base(void) |
53 | static inline uintptr_t get_stack_base(void) |
52 | { |
54 | { |
53 | /* TODO */ |
55 | uintptr_t v; |
- | 56 | asm volatile ("and %0, sp, %1\n" : "=r" (v) : "r" (~(STACK_SIZE-1))); |
|
54 | return NULL; |
57 | return v; |
55 | } |
58 | } |
56 | 59 | ||
57 | extern void cpu_halt(void); |
60 | extern void cpu_halt(void); |
58 | extern void asm_delay_loop(uint32_t t); |
61 | extern void asm_delay_loop(uint32_t t); |
59 | extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, |
62 | extern void userspace_asm(uintptr_t ustack, uintptr_t uspace_uarg, |