Merge branch 'topic/cleanup-s3c24xx' into next/cleanup-s3c24xx
[linux-2.6/libata-dev.git] / arch / arm / lib / ecard.S
blobe6057fa851bbf28288eabf24d4aeb7a0ce5914a2
1 /*
2  *  linux/arch/arm/lib/ecard.S
3  *
4  *  Copyright (C) 1995, 1996 Russell King
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * 27/03/03 Ian Molton Clean up CONFIG_CPU
11  *
12  */
13 #include <linux/linkage.h>
14 #include <asm/assembler.h>
16 #define CPSR2SPSR(rt) \
17                 mrs     rt, cpsr; \
18                 msr     spsr_cxsf, rt
20 @ Purpose: call an expansion card loader to read bytes.
21 @ Proto  : char read_loader(int offset, char *card_base, char *loader);
22 @ Returns: byte read
24 ENTRY(ecard_loader_read)
25                 stmfd   sp!, {r4 - r12, lr}
26                 mov     r11, r1
27                 mov     r1, r0
28                 CPSR2SPSR(r0)
29                 mov     lr, pc
30                 mov     pc, r2
31                 ldmfd   sp!, {r4 - r12, pc}
33 @ Purpose: call an expansion card loader to reset the card
34 @ Proto  : void read_loader(int card_base, char *loader);
35 @ Returns: byte read
37 ENTRY(ecard_loader_reset)
38                 stmfd   sp!, {r4 - r12, lr}
39                 mov     r11, r0
40                 CPSR2SPSR(r0)
41                 mov     lr, pc
42                 add     pc, r1, #8
43                 ldmfd   sp!, {r4 - r12, pc}