io_32.h revision 1dc9e472e19acfe6dc7f41e429236e7eef7ceda1
11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/**************************************************************************** 21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** This header was automatically generated from a Linux kernel header 51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** of the same name, to make information necessary for userspace to 61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** call into the kernel available to libc. It contains only constants, 71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** structures, and macros generated from the original header, and thus, 81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** contains no copyrightable information. 91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *** 101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project **************************************************************************** 111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project ****************************************************************************/ 121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifndef _ASM_IO_H 131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define _ASM_IO_H 141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/string.h> 161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <linux/compiler.h> 171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define IO_SPACE_LIMIT 0xffff 191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define XQUAD_PORTIO_BASE 0xfe400000 211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define XQUAD_PORTIO_QUAD 0x40000 221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project 231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef REALLY_SLOW_IO 241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define __BUILDIO(bwl,bw,type) static inline void out##bwl(unsigned type value, int port) { out##bwl##_local(value, port); } static inline unsigned type in##bwl(int port) { return in##bwl##_local(port); } 261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#define BUILDIO(bwl,bw,type) static inline void out##bwl##_local(unsigned type value, int port) { __asm__ __volatile__("out" #bwl " %" #bw "0, %w1" : : "a"(value), "Nd"(port)); } static inline unsigned type in##bwl##_local(int port) { unsigned type value; __asm__ __volatile__("in" #bwl " %w1, %" #bw "0" : "=a"(value) : "Nd"(port)); return value; } static inline void out##bwl##_local_p(unsigned type value, int port) { out##bwl##_local(value, port); slow_down_io(); } static inline unsigned type in##bwl##_local_p(int port) { unsigned type value = in##bwl##_local(port); slow_down_io(); return value; } __BUILDIO(bwl,bw,type) static inline void out##bwl##_p(unsigned type value, int port) { out##bwl(value, port); slow_down_io(); } static inline unsigned type in##bwl##_p(int port) { unsigned type value = in##bwl(port); slow_down_io(); return value; } static inline void outs##bwl(int port, const void *addr, unsigned long count) { __asm__ __volatile__("rep; outs" #bwl : "+S"(addr), "+c"(count) : "d"(port)); } static inline void ins##bwl(int port, void *addr, unsigned long count) { __asm__ __volatile__("rep; ins" #bwl : "+D"(addr), "+c"(count) : "d"(port)); } 271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif 28