diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/arm26/lib/io-acorn.S |
Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/arm26/lib/io-acorn.S')
-rw-r--r-- | arch/arm26/lib/io-acorn.S | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/arch/arm26/lib/io-acorn.S b/arch/arm26/lib/io-acorn.S new file mode 100644 index 00000000000..f6c3e30b1b4 --- /dev/null +++ b/arch/arm26/lib/io-acorn.S | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * linux/arch/arm26/lib/io-acorn.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 | #include <linux/config.h> /* for CONFIG_CPU_nn */ | ||
11 | #include <linux/linkage.h> | ||
12 | #include <asm/assembler.h> | ||
13 | #include <asm/hardware.h> | ||
14 | |||
15 | .text | ||
16 | .align | ||
17 | |||
18 | .equ diff_pcio_base, PCIO_BASE - IO_BASE | ||
19 | |||
20 | .macro outw2 rd | ||
21 | mov r8, \rd, lsl #16 | ||
22 | orr r8, r8, r8, lsr #16 | ||
23 | str r8, [r3, r0, lsl #2] | ||
24 | mov r8, \rd, lsr #16 | ||
25 | orr r8, r8, r8, lsl #16 | ||
26 | str r8, [r3, r0, lsl #2] | ||
27 | .endm | ||
28 | |||
29 | .macro inw2 rd, mask, temp | ||
30 | ldr \rd, [r0] | ||
31 | and \rd, \rd, \mask | ||
32 | ldr \temp, [r0] | ||
33 | orr \rd, \rd, \temp, lsl #16 | ||
34 | .endm | ||
35 | |||
36 | .macro addr rd | ||
37 | tst \rd, #0x80000000 | ||
38 | mov \rd, \rd, lsl #2 | ||
39 | add \rd, \rd, #IO_BASE | ||
40 | addeq \rd, \rd, #diff_pcio_base | ||
41 | .endm | ||
42 | |||
43 | .iosl_warning: | ||
44 | .ascii "<4>insl/outsl not implemented, called from %08lX\0" | ||
45 | .align | ||
46 | |||
47 | /* | ||
48 | * These make no sense on Acorn machines. | ||
49 | * Print a warning message. | ||
50 | */ | ||
51 | ENTRY(insl) | ||
52 | ENTRY(outsl) | ||
53 | adr r0, .iosl_warning | ||
54 | mov r1, lr | ||
55 | b printk | ||
56 | |||
57 | @ Purpose: write a memc register | ||
58 | @ Proto : void memc_write(int register, int value); | ||
59 | @ Returns: nothing | ||
60 | |||
61 | ENTRY(memc_write) | ||
62 | cmp r0, #7 | ||
63 | RETINSTR(movgt,pc,lr) | ||
64 | mov r0, r0, lsl #17 | ||
65 | mov r1, r1, lsl #15 | ||
66 | mov r1, r1, lsr #17 | ||
67 | orr r0, r0, r1, lsl #2 | ||
68 | add r0, r0, #0x03600000 | ||
69 | strb r0, [r0] | ||
70 | RETINSTR(mov,pc,lr) | ||
71 | |||