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/linkage.h> 11#include <asm/assembler.h> 12#include <asm/hardware.h> 13 14 .text 15 .align 16 17 .equ diff_pcio_base, PCIO_BASE - IO_BASE 18 19 .macro outw2 rd 20 mov r8, \rd, lsl #16 21 orr r8, r8, r8, lsr #16 22 str r8, [r3, r0, lsl #2] 23 mov r8, \rd, lsr #16 24 orr r8, r8, r8, lsl #16 25 str r8, [r3, r0, lsl #2] 26 .endm 27 28 .macro inw2 rd, mask, temp 29 ldr \rd, [r0] 30 and \rd, \rd, \mask 31 ldr \temp, [r0] 32 orr \rd, \rd, \temp, lsl #16 33 .endm 34 35 .macro addr rd 36 tst \rd, #0x80000000 37 mov \rd, \rd, lsl #2 38 add \rd, \rd, #IO_BASE 39 addeq \rd, \rd, #diff_pcio_base 40 .endm 41 42.iosl_warning: 43 .ascii "<4>insl/outsl not implemented, called from %08lX\0" 44 .align 45 46/* 47 * These make no sense on Acorn machines. 48 * Print a warning message. 49 */ 50ENTRY(insl) 51ENTRY(outsl) 52 adr r0, .iosl_warning 53 mov r1, lr 54 b printk 55 56@ Purpose: write a memc register 57@ Proto : void memc_write(int register, int value); 58@ Returns: nothing 59 60ENTRY(memc_write) 61 cmp r0, #7 62 RETINSTR(movgt,pc,lr) 63 mov r0, r0, lsl #17 64 mov r1, r1, lsl #15 65 mov r1, r1, lsr #17 66 orr r0, r0, r1, lsl #2 67 add r0, r0, #0x03600000 68 strb r0, [r0] 69 RETINSTR(mov,pc,lr) 70