Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/lib/ecard.S
10817 views
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
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}
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
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}
45
46
47