18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/* 28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * (C) Copyright IBM Corporation 2004 38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * All Rights Reserved. 48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 58d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Permission is hereby granted, free of charge, to any person obtaining a 68d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * copy of this software and associated documentation files (the "Software"), 78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * to deal in the Software without restriction, including without limitation 88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * on the rights to use, copy, modify, merge, publish, distribute, sub 98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * license, and/or sell copies of the Software, and to permit persons to whom 108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * the Software is furnished to do so, subject to the following conditions: 118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * The above copyright notice and this permission notice (including the next 138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * paragraph) shall be included in all copies or substantial portions of the 148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Software. 158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, 208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * USE OR OTHER DEALINGS IN THE SOFTWARE. 238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/** 268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * \file mmio.h 278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Functions for properly handling memory mapped IO on various platforms. 288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * 298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * \author Ian Romanick <idr@us.ibm.com> 308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */ 318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef MMIO_H 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define MMIO_H 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "main/glheader.h" 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#if defined( __powerpc__ ) 398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic INLINE uint32_t 41read_MMIO_LE32( volatile void * base, unsigned long offset ) 42{ 43 uint32_t val; 44 45 __asm__ __volatile__( "lwbrx %0, %1, %2 ; eieio" 46 : "=r" (val) 47 : "b" (base), "r" (offset) ); 48 return val; 49} 50 51#else 52 53static INLINE uint32_t 54read_MMIO_LE32( volatile void * base, unsigned long offset ) 55{ 56 volatile uint32_t * p = (volatile uint32_t *) (((volatile char *) base) + offset); 57 return LE32_TO_CPU( p[0] ); 58} 59 60#endif 61 62#endif /* MMIO_H */ 63