Rev 3949 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3949 | Rev 4018 | ||
---|---|---|---|
Line 79... | Line 79... | ||
79 | /** Return base address of current stack. |
79 | /** Return base address of current stack. |
80 | * |
80 | * |
81 | * Return the base address of the current stack. |
81 | * Return the base address of the current stack. |
82 | * The stack is assumed to be STACK_SIZE bytes long. |
82 | * The stack is assumed to be STACK_SIZE bytes long. |
83 | * The stack must start on page boundary. |
83 | * The stack must start on page boundary. |
- | 84 | * |
|
84 | */ |
85 | */ |
85 | static inline uintptr_t get_stack_base(void) |
86 | static inline uintptr_t get_stack_base(void) |
86 | { |
87 | { |
87 | uintptr_t v; |
88 | uintptr_t v; |
88 | asm volatile ( |
89 | asm volatile ( |
89 | "and %0, sp, %1\n" |
90 | "and %[v], sp, %[size]\n" |
90 | : "=r" (v) |
91 | : [v] "=r" (v) |
91 | : "r" (~(STACK_SIZE - 1)) |
92 | : [size] "r" (~(STACK_SIZE - 1)) |
92 | ); |
93 | ); |
93 | return v; |
94 | return v; |
94 | } |
95 | } |
95 | 96 | ||
96 | extern void cpu_halt(void); |
97 | extern void cpu_halt(void); |