Staging: rts_pstor: fix read past end of buffer
[linux-2.6.git] / arch / arm / lib / ecard.S
blob8678eb2b7a60a21feaf0a74a919cf3a536dc3fd0
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>
15 #include <mach/hardware.h>
17 #define CPSR2SPSR(rt) \
18                 mrs     rt, cpsr; \
19                 msr     spsr_cxsf, rt
21 @ Purpose: call an expansion card loader to read bytes.
22 @ Proto  : char read_loader(int offset, char *card_base, char *loader);
23 @ Returns: byte read
25 ENTRY(ecard_loader_read)
26                 stmfd   sp!, {r4 - r12, lr}
27                 mov     r11, r1
28                 mov     r1, r0
29                 CPSR2SPSR(r0)
30                 mov     lr, pc
31                 mov     pc, r2
32                 ldmfd   sp!, {r4 - r12, pc}
34 @ Purpose: call an expansion card loader to reset the card
35 @ Proto  : void read_loader(int card_base, char *loader);
36 @ Returns: byte read
38 ENTRY(ecard_loader_reset)
39                 stmfd   sp!, {r4 - r12, lr}
40                 mov     r11, r0
41                 CPSR2SPSR(r0)
42                 mov     lr, pc
43                 add     pc, r1, #8
44                 ldmfd   sp!, {r4 - r12, pc}