1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * linux/arch/arm/lib/ecard.S |
4 | * |
5 | * Copyright (C) 1995, 1996 Russell King |
6 | * |
7 | * 27/03/03 Ian Molton Clean up CONFIG_CPU |
8 | */ |
9 | #include <linux/linkage.h> |
10 | #include <asm/assembler.h> |
11 | |
12 | #define CPSR2SPSR(rt) \ |
13 | mrs rt, cpsr; \ |
14 | msr spsr_cxsf, rt |
15 | |
16 | @ Purpose: call an expansion card loader to read bytes. |
17 | @ Proto : char read_loader(int offset, char *card_base, char *loader); |
18 | @ Returns: byte read |
19 | |
20 | ENTRY(ecard_loader_read) |
21 | stmfd sp!, {r4 - r12, lr} |
22 | mov r11, r1 |
23 | mov r1, r0 |
24 | CPSR2SPSR(r0) |
25 | mov lr, pc |
26 | mov pc, r2 |
27 | ldmfd sp!, {r4 - r12, pc} |
28 | |
29 | @ Purpose: call an expansion card loader to reset the card |
30 | @ Proto : void read_loader(int card_base, char *loader); |
31 | @ Returns: byte read |
32 | |
33 | ENTRY(ecard_loader_reset) |
34 | stmfd sp!, {r4 - r12, lr} |
35 | mov r11, r0 |
36 | CPSR2SPSR(r0) |
37 | mov lr, pc |
38 | add pc, r1, #8 |
39 | ldmfd sp!, {r4 - r12, pc} |
40 | |
41 | |