Mercurial > hg > CbC > CbC_xv6
view src/asm.S @ 82:d419660ad71d
tweak generate_stub.pl
author | anatofuz |
---|---|
date | Fri, 11 Oct 2019 19:32:16 +0900 |
parents | 83c23a36980d |
children |
line wrap: on
line source
#include "arm.h" .text .code 32 .global set_stk .global get_fp # set the stack for IRQ mode, we can use r0-r3 for free # input: r0 - #mode, r1 - stk set_stk: # switch to the IRQ mode MRS r2, cpsr BIC r2, r2, #MODE_MASK ORR r2, r2, r0 MSR cpsr_cxsf, r2 # set the stack pointer, sp register is banked, so we need to switch mode MOV sp, r1 # switch back to the SVC mode BIC r2, r2, #MODE_MASK ORR r2, r2, #SVC_MODE MSR cpsr_cxsf, r2 # return bx lr # return the frame pointer for the current function get_fp: MOV r0, fp bx lr