1/* 2 * linux/arch/arm/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 */ 51ENTRY(insl) 52ENTRY(outsl) 53 adr r0, .iosl_warning 54 mov r1, lr 55 b SYMBOL_NAME(printk) 56 57@ Purpose: write a memc register 58@ Proto : void memc_write(int register, int value); 59@ Returns: nothing 60 61#ifdef CONFIG_CPU_26 62ENTRY(memc_write) 63 cmp r0, #7 64 RETINSTR(movgt,pc,lr) 65 mov r0, r0, lsl #17 66 mov r1, r1, lsl #15 67 mov r1, r1, lsr #17 68 orr r0, r0, r1, lsl #2 69 add r0, r0, #0x03600000 70 strb r0, [r0] 71 RETINSTR(mov,pc,lr) 72#endif 73 74