2 * linux/arch/arm/lib/io-acorn.S
4 * Copyright (C) 1995, 1996 Russell King
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.
10 #include <linux/config.h> /* for CONFIG_CPU_nn */
11 #include <linux/linkage.h>
12 #include <asm/assembler.h>
13 #include <asm/hardware.h>
18 .equ diff_pcio_base, PCIO_BASE - IO_BASE
22 orr r8, r8, r8, lsr #16
23 str r8, [r3, r0, lsl #2]
25 orr r8, r8, r8, lsl #16
26 str r8, [r3, r0, lsl #2]
29 .macro inw2 rd, mask, temp
33 orr \rd, \rd, \temp, lsl #16
39 add \rd, \rd, #IO_BASE
40 addeq \rd, \rd, #diff_pcio_base
44 .ascii "<4>insl/outsl not implemented, called from %08lX\0"
48 * These make no sense on Acorn machines.
49 * Print a warning message.
57 /* Purpose: read a block of data from a hardware register to memory.
58 * Proto : void insw(int from_port, void *to, int len_in_words);
59 * Notes : increment to, 'to' must be 16-bit aligned
64 RETINSTR(moveq, pc, lr)
70 RETINSTR(moveq, pc, lr)
74 @ Purpose: write a block of data from memory to a hardware register.
75 @ Proto : outsw(int to_reg, void *from, int len_in_words);
76 @ Notes : increments from
80 RETINSTR(moveq, pc, lr)
86 RETINSTR(moveq, pc, lr)
90 @ Purpose: write a memc register
91 @ Proto : void memc_write(int register, int value);
94 #if defined(CONFIG_CPU_26)
101 orr r0, r0, r1, lsl #2
102 add r0, r0, #0x03600000