Rev 2465 | Rev 2787 | 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 | ; |