0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <linux/linkage.h>
0010 #include <asm/assembler.h>
0011
0012 #define CPSR2SPSR(rt) \
0013 mrs rt, cpsr; \
0014 msr spsr_cxsf, rt
0015
0016 @ Purpose: call an expansion card loader to read bytes.
0017 @ Proto : char read_loader(int offset, char *card_base, char *loader);
0018 @ Returns: byte read
0019
0020 ENTRY(ecard_loader_read)
0021 stmfd sp!, {r4 - r12, lr}
0022 mov r11, r1
0023 mov r1, r0
0024 CPSR2SPSR(r0)
0025 mov lr, pc
0026 mov pc, r2
0027 ldmfd sp!, {r4 - r12, pc}
0028
0029 @ Purpose: call an expansion card loader to reset the card
0030 @ Proto : void read_loader(int card_base, char *loader);
0031 @ Returns: byte read
0032
0033 ENTRY(ecard_loader_reset)
0034 stmfd sp!, {r4 - r12, lr}
0035 mov r11, r0
0036 CPSR2SPSR(r0)
0037 mov lr, pc
0038 add pc, r1, #8
0039 ldmfd sp!, {r4 - r12, pc}
0040