• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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>
16
17#define CPSR2SPSR(rt) \
18		mrs	rt, cpsr; \
19		msr	spsr_cxsf, rt
20
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
24
25ENTRY(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}
33
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
37
38ENTRY(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}
45
46