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