blob: 5f62ade5be39141ea60eaaa3deb41e50dc348fe0 [file] [log] [blame]
* linux/arch/arm26/lib/io-acorn.S
* Copyright (C) 1995, 1996 Russell King
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/hardware.h>
.equ diff_pcio_base, PCIO_BASE - IO_BASE
.macro outw2 rd
mov r8, \rd, lsl #16
orr r8, r8, r8, lsr #16
str r8, [r3, r0, lsl #2]
mov r8, \rd, lsr #16
orr r8, r8, r8, lsl #16
str r8, [r3, r0, lsl #2]
.macro inw2 rd, mask, temp
ldr \rd, [r0]
and \rd, \rd, \mask
ldr \temp, [r0]
orr \rd, \rd, \temp, lsl #16
.macro addr rd
tst \rd, #0x80000000
mov \rd, \rd, lsl #2
add \rd, \rd, #IO_BASE
addeq \rd, \rd, #diff_pcio_base
.ascii "<4>insl/outsl not implemented, called from %08lX\0"
* These make no sense on Acorn machines.
* Print a warning message.
adr r0, .iosl_warning
mov r1, lr
b printk
@ Purpose: write a memc register
@ Proto : void memc_write(int register, int value);
@ Returns: nothing
cmp r0, #7
mov r0, r0, lsl #17
mov r1, r1, lsl #15
mov r1, r1, lsr #17
orr r0, r0, r1, lsl #2
add r0, r0, #0x03600000
strb r0, [r0]