Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79962
b: refs/heads/master
c: ba08242
h: refs/heads/master
v: v3
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Jan 30, 2008
1 parent a5fafd4 commit 5a638ba
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ee238e5ca66858f80170f87724f84d67183b069a
refs/heads/master: ba082427ae6ffbf8e48a26ae4f72f4501a6b80c1
6 changes: 6 additions & 0 deletions trunk/arch/x86/boot/compressed/misc_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
* High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
*/

/*
* we have to be careful, because no indirections are allowed here, and
* paravirt_ops is a kind of one. As it will only run in baremetal anyway,
* we just keep it from happening
*/
#undef CONFIG_PARAVIRT
#define _LINUX_STRING_H_ 1
#define __LINUX_BITMAP_H 1

Expand Down
30 changes: 23 additions & 7 deletions trunk/include/asm-x86/io_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ extern void native_io_delay(void);
extern int io_delay_type;
extern void io_delay_init(void);

#if defined(CONFIG_PARAVIRT)
#include <asm/paravirt.h>
#else

static inline void slow_down_io(void)
{
native_io_delay();
Expand All @@ -49,6 +53,7 @@ static inline void slow_down_io(void)
native_io_delay();
#endif
}
#endif

/*
* Talk about misusing macros..
Expand All @@ -57,21 +62,32 @@ static inline void slow_down_io(void)
static inline void out##s(unsigned x value, unsigned short port) {

#define __OUT2(s,s1,s2) \
__asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1" : : "a" (value), "Nd" (port))
__asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1"

#ifndef REALLY_SLOW_IO
#define REALLY_SLOW_IO
#define UNSET_REALLY_SLOW_IO
#endif

#define __OUT(s,s1,x) \
__OUT1(s,x) __OUT2(s,s1,"w"); } \
__OUT1(s##_p,x) __OUT2(s,s1,"w"); slow_down_io(); }
__OUT1(s,x) __OUT2(s,s1,"w") : : "a" (value), "Nd" (port)); } \
__OUT1(s##_p, x) __OUT2(s, s1, "w") : : "a" (value), "Nd" (port)); \
slow_down_io(); }

#define __IN1(s) \
static inline RETURN_TYPE in##s(unsigned short port) { RETURN_TYPE _v;

#define __IN2(s,s1,s2) \
__asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0" : "=a" (_v) : "Nd" (port))
__asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0"

#define __IN(s,s1,i...) \
__IN1(s) __IN2(s, s1, "w") : "=a" (_v) : "Nd" (port), ##i); return _v; } \
__IN1(s##_p) __IN2(s, s1, "w") : "=a" (_v) : "Nd" (port), ##i); \
slow_down_io(); return _v; }

#define __IN(s,s1) \
__IN1(s) __IN2(s,s1,"w"); return _v; } \
__IN1(s##_p) __IN2(s,s1,"w"); slow_down_io(); return _v; }
#ifdef UNSET_REALLY_SLOW_IO
#undef REALLY_SLOW_IO
#endif

#define __INS(s) \
static inline void ins##s(unsigned short port, void * addr, unsigned long count) \
Expand Down

0 comments on commit 5a638ba

Please sign in to comment.