1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/**************************************************************************** 2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner **************************************************************************** 3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** 4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** This header was automatically generated from a Linux kernel header 5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** of the same name, to make information necessary for userspace to 6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** call into the kernel available to libc. It contains only constants, 7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** structures, and macros generated from the original header, and thus, 8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** contains no copyrightable information. 9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner *** 1029539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** To edit the content of this header, modify the corresponding 1129539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** source file (e.g. under external/kernel-headers/original/) then 1229539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** run bionic/libc/kernel/tools/update_all.py 1329539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** 1429539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** Any manual change here will be lost the next time this script will 1529539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** be run. You've been warned! 1629539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh *** 17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner **************************************************************************** 18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/ 19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _ASM_IO_H 20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _ASM_IO_H 21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/string.h> 22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/compiler.h> 2329539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define IO_SPACE_LIMIT 0xffff 25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define XQUAD_PORTIO_BASE 0xfe400000 26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define XQUAD_PORTIO_QUAD 0x40000 27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifdef REALLY_SLOW_IO 2829539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif 30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#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); } 31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#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)); } 32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif 3329539e93c9d8dfe03934458288597a12e5ed3693Andrew Hsieh/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 34