1*6955d476Sthorpej/* $NetBSD: becc_pci_space_asm.S,v 1.1 2003/05/30 18:38:02 thorpej Exp $ */ 2*6955d476Sthorpej 3*6955d476Sthorpej/* 4*6955d476Sthorpej * Copyright (c) 2003 Wasabi Systems, Inc. 5*6955d476Sthorpej * All rights reserved. 6*6955d476Sthorpej * 7*6955d476Sthorpej * Written by Jason R. Thorpe for Wasabi Systems, Inc. 8*6955d476Sthorpej * 9*6955d476Sthorpej * Redistribution and use in source and binary forms, with or without 10*6955d476Sthorpej * modification, are permitted provided that the following conditions 11*6955d476Sthorpej * are met: 12*6955d476Sthorpej * 1. Redistributions of source code must retain the above copyright 13*6955d476Sthorpej * notice, this list of conditions and the following disclaimer. 14*6955d476Sthorpej * 2. Redistributions in binary form must reproduce the above copyright 15*6955d476Sthorpej * notice, this list of conditions and the following disclaimer in the 16*6955d476Sthorpej * documentation and/or other materials provided with the distribution. 17*6955d476Sthorpej * 3. All advertising materials mentioning features or use of this software 18*6955d476Sthorpej * must display the following acknowledgement: 19*6955d476Sthorpej * This product includes software developed for the NetBSD Project by 20*6955d476Sthorpej * Wasabi Systems, Inc. 21*6955d476Sthorpej * 4. The name of Wasabi Systems, Inc. may not be used to endorse 22*6955d476Sthorpej * or promote products derived from this software without specific prior 23*6955d476Sthorpej * written permission. 24*6955d476Sthorpej * 25*6955d476Sthorpej * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND 26*6955d476Sthorpej * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27*6955d476Sthorpej * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28*6955d476Sthorpej * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC 29*6955d476Sthorpej * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30*6955d476Sthorpej * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31*6955d476Sthorpej * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32*6955d476Sthorpej * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33*6955d476Sthorpej * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34*6955d476Sthorpej * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35*6955d476Sthorpej * POSSIBILITY OF SUCH DAMAGE. 36*6955d476Sthorpej */ 37*6955d476Sthorpej 38*6955d476Sthorpej#include <arm/asm.h> 39*6955d476Sthorpej#include <arm/cpuconf.h> 40*6955d476Sthorpej 41*6955d476Sthorpej/* 42*6955d476Sthorpej * Bus space functions for BECC PCI space access. We have to swizzle 43*6955d476Sthorpej * the address for 1 and 2 byte accesses when in big-endian mode. 44*6955d476Sthorpej */ 45*6955d476Sthorpej 46*6955d476Sthorpej/* 47*6955d476Sthorpej * read single 48*6955d476Sthorpej */ 49*6955d476Sthorpej 50*6955d476SthorpejENTRY(becc_pci_bs_r_1) 51*6955d476Sthorpej#ifdef __ARMEB__ 52*6955d476Sthorpej add r1, r1, r2 53*6955d476Sthorpej eor r1, r1, #0x3 54*6955d476Sthorpej ldrb r0, [r1] 55*6955d476Sthorpej#else 56*6955d476Sthorpej ldrb r0, [r1, r2] 57*6955d476Sthorpej#endif /* __ARMEB__ */ 58*6955d476Sthorpej mov pc, lr 59*6955d476Sthorpej 60*6955d476SthorpejENTRY(becc_pci_bs_r_2) 61*6955d476Sthorpej#ifdef __ARMEB__ 62*6955d476Sthorpej add r1, r1, r2 63*6955d476Sthorpej eor r1, r1, #0x2 64*6955d476Sthorpej ldrh r0, [r1] 65*6955d476Sthorpej#else 66*6955d476Sthorpej ldrh r0, [r1, r2] 67*6955d476Sthorpej#endif /* __ARMEB__ */ 68*6955d476Sthorpej mov pc, lr 69*6955d476Sthorpej 70*6955d476SthorpejENTRY(becc_pci_bs_r_4) 71*6955d476Sthorpej ldr r0, [r1, r2] 72*6955d476Sthorpej mov pc, lr 73*6955d476Sthorpej 74*6955d476Sthorpej/* 75*6955d476Sthorpej * write single 76*6955d476Sthorpej */ 77*6955d476Sthorpej 78*6955d476SthorpejENTRY(becc_pci_bs_w_1) 79*6955d476Sthorpej#ifdef __ARMEB__ 80*6955d476Sthorpej add r1, r1, r2 81*6955d476Sthorpej eor r1, r1, #0x3 82*6955d476Sthorpej strb r3, [r1] 83*6955d476Sthorpej#else 84*6955d476Sthorpej strb r3, [r1, r2] 85*6955d476Sthorpej#endif /* __ARMEB__ */ 86*6955d476Sthorpej mov pc, lr 87*6955d476Sthorpej 88*6955d476SthorpejENTRY(becc_pci_bs_w_2) 89*6955d476Sthorpej#ifdef __ARMEB__ 90*6955d476Sthorpej add r1, r1, r2 91*6955d476Sthorpej eor r1, r1, #0x2 92*6955d476Sthorpej strh r3, [r1] 93*6955d476Sthorpej#else 94*6955d476Sthorpej strh r3, [r1, r2] 95*6955d476Sthorpej#endif /* __ARMEB__ */ 96*6955d476Sthorpej mov pc, lr 97*6955d476Sthorpej 98*6955d476SthorpejENTRY(becc_pci_bs_w_4) 99*6955d476Sthorpej str r3, [r1, r2] 100*6955d476Sthorpej mov pc, lr 101