Rev 2465 | Rev 3222 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2465 | Rev 2477 | ||
|---|---|---|---|
| Line 85... | Line 85... | ||
| 85 | ipl_t user_mode = current_status_reg_read() & |
85 | ipl_t user_mode = current_status_reg_read() & |
| 86 | (~STATUS_REG_MODE_MASK | USER_MODE); |
86 | (~STATUS_REG_MODE_MASK | USER_MODE); |
| 87 | 87 | ||
| 88 | /* set user mode, set registers, jump */ |
88 | /* set user mode, set registers, jump */ |
| 89 | asm volatile ( |
89 | asm volatile ( |
| 90 | "mov r0, %0 \n" |
90 | "mov sp, %0 \n" |
| 91 | "msr spsr_c, %1 \n" |
91 | "msr spsr_c, %1 \n" |
| 92 | "ldmfd r0!, {r0-r12, sp, lr}^ \n" |
92 | "ldmfd sp!, {r0-r12, sp, lr}^ \n" |
| 93 | "ldmfd r0!, {pc}^\n" |
93 | "ldmfd sp!, {pc}^\n" |
| 94 | : |
94 | : |
| 95 | : "r" (&ustate), "r" (user_mode) |
95 | : "r" (&ustate), "r" (user_mode) |
| 96 | : "r0", "r1" |
- | |
| 97 | ); |
96 | ); |
| 98 | 97 | ||
| 99 | /* unreachable */ |
98 | /* unreachable */ |
| 100 | while(1) |
99 | while(1) |
| 101 | ; |
100 | ; |