cpufunc.h File Reference

#include <sysinterf/types.h>
#include <machdep/psl.h>

Go to the source code of this file.

Data Structures

struct  __xchg_dummy

Defines

#define xchg(ptr, v)   ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
#define __xg(x)   ((struct __xchg_dummy *)(x))
#define __use_immediate_port(port)   0
#define inb(port)   (__use_immediate_port(port) ? __inbc(port) : __inb(port))
#define inw(port)   (__use_immediate_port(port) ? __inwc(port) : __inw(port))
#define inl(port)   (__use_immediate_port(port) ? __inlc(port) : __inl(port))
#define outb(port, data)   (__use_immediate_port(port) ? __outbc(port, data) : __outb(port, data))
#define outw(port, data)   (__use_immediate_port(port) ? __outwc(port, data) : __outw(port, data))
#define outl(port, data)   (__use_immediate_port(port) ? __outlc(port, data) : __outl(port, data))

Functions

static __inline void invlpg (u_int addr)
static __inline void lidt (void *base, unsigned int limit)
static __inline void lgdt (void *base, unsigned int limit)
static __inline void lcall (u_int selector)
static __inline void lldt (u_short sel)
static __inline void lcr0 (u_int val)
static __inline u_int rcr0 (void)
static __inline u_int rcr2 (void)
static __inline void lcr2 (u_int val)
static __inline void lcr3 (u_int val)
static __inline u_int rcr3 (void)
static __inline void lcr4 (u_int val)
static __inline u_int rcr4 (void)
static __inline void tlbflush (void)
static __inline void leax (u_int val)
static __inline void lebx (u_int val)
static __inline void lecx (u_int val)
static __inline u_int rebx (void)
static __inline u_int recx (void)
static __inline void ledx (u_int val)
static __inline void cpu_hang ()
static __inline void cpu_halt ()
static __inline void yield ()
static __inline void disable_intr (void)
static __inline void enable_intr (void)
static __inline u_long read_eflags (void)
static __inline int interruptible ()
static __inline void write_eflags (u_long ef)
static __inline u_int64_t rdmsr (u_int msr)
static __inline void wrmsr (u_int msr, u_int64_t newval)
static __inline void wbinvd (void)
static __inline u_int64_t rdtsc (void)
static __inline u_int64_t rdpmc (u_int pmc)
static __inline unsigned long __xchg (unsigned long x, volatile void *ptr, int size)
static __inline u_int8_t __inbc (int port)
static __inline u_int8_t __inb (int port)
static __inline void insb (int port, void *addr, int cnt)
static __inline u_int16_t __inwc (int port)
static __inline u_int16_t __inw (int port)
static __inline void insw (int port, void *addr, int cnt)
static __inline u_int32_t __inlc (int port)
static __inline u_int32_t __inl (int port)
static __inline void insl (int port, void *addr, int cnt)
static __inline void __outbc (int port, u_int8_t data)
static __inline void __outb (int port, u_int8_t data)
static __inline void outsb (int port, void *addr, int cnt)
static __inline void __outwc (int port, u_int16_t data)
static __inline void __outw (int port, u_int16_t data)
static __inline void outsw (int port, void *addr, int cnt)
static __inline void __outlc (int port, u_int32_t data)
static __inline void __outl (int port, u_int32_t data)
static __inline void outsl (int port, void *addr, int cnt)
static __inline void waitch (u_int8_t waited)


Define Documentation

#define __use_immediate_port (  port   )     0
 

#define __xg (  x   )     ((struct __xchg_dummy *)(x))
 

#define inb (  port   )     (__use_immediate_port(port) ? __inbc(port) : __inb(port))
 

#define inl (  port   )     (__use_immediate_port(port) ? __inlc(port) : __inl(port))
 

#define inw (  port   )     (__use_immediate_port(port) ? __inwc(port) : __inw(port))
 

#define outb (  port,
data   )     (__use_immediate_port(port) ? __outbc(port, data) : __outb(port, data))
 

#define outl (  port,
data   )     (__use_immediate_port(port) ? __outlc(port, data) : __outl(port, data))
 

#define outw (  port,
data   )     (__use_immediate_port(port) ? __outwc(port, data) : __outw(port, data))
 

#define xchg (  ptr,
v   )     ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
 


Function Documentation

static __inline u_int8_t __inb (  int  port  )  [static]
 

static __inline u_int8_t __inbc (  int  port  )  [static]
 

static __inline u_int32_t __inl (  int  port  )  [static]
 

static __inline u_int32_t __inlc (  int  port  )  [static]
 

static __inline u_int16_t __inw (  int  port  )  [static]
 

static __inline u_int16_t __inwc (  int  port  )  [static]
 

static __inline void __outb (  int  port,
u_int8_t  data
)  [static]
 

static __inline void __outbc (  int  port,
u_int8_t  data
)  [static]
 

static __inline void __outl (  int  port,
u_int32_t  data
)  [static]
 

static __inline void __outlc (  int  port,
u_int32_t  data
)  [static]
 

static __inline void __outw (  int  port,
u_int16_t  data
)  [static]
 

static __inline void __outwc (  int  port,
u_int16_t  data
)  [static]
 

static __inline unsigned long __xchg (  unsigned long  x,
volatile void *  ptr,
int  size
)  [static]
 

static __inline void cpu_halt (   )  [static]
 

static __inline void cpu_hang (   )  [static]
 

static __inline void disable_intr (  void   )  [static]
 

static __inline void enable_intr (  void   )  [static]
 

static __inline void insb (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline void insl (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline void insw (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline int interruptible (   )  [static]
 

returns 1 if thread is interruptible (warning it doesn't mean thread is schedulable so additional checks maybe necessary)

static __inline void invlpg (  u_int  addr  )  [static]
 

static __inline void lcall (  u_int  selector  )  [static]
 

static __inline void lcr0 (  u_int  val  )  [static]
 

static __inline void lcr2 (  u_int  val  )  [static]
 

static __inline void lcr3 (  u_int  val  )  [static]
 

static __inline void lcr4 (  u_int  val  )  [static]
 

static __inline void leax (  u_int  val  )  [static]
 

static __inline void lebx (  u_int  val  )  [static]
 

static __inline void lecx (  u_int  val  )  [static]
 

static __inline void ledx (  u_int  val  )  [static]
 

static __inline void lgdt (  void *  base,
unsigned int  limit
)  [static]
 

static __inline void lidt (  void *  base,
unsigned int  limit
)  [static]
 

static __inline void lldt (  u_short  sel  )  [static]
 

static __inline void outsb (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline void outsl (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline void outsw (  int  port,
void *  addr,
int  cnt
)  [static]
 

static __inline u_int rcr0 (  void   )  [static]
 

static __inline u_int rcr2 (  void   )  [static]
 

static __inline u_int rcr3 (  void   )  [static]
 

static __inline u_int rcr4 (  void   )  [static]
 

static __inline u_int64_t rdmsr (  u_int  msr  )  [static]
 

static __inline u_int64_t rdpmc (  u_int  pmc  )  [static]
 

static __inline u_int64_t rdtsc (  void   )  [static]
 

static __inline u_long read_eflags (  void   )  [static]
 

static __inline u_int rebx (  void   )  [static]
 

static __inline u_int recx (  void   )  [static]
 

static __inline void tlbflush (  void   )  [static]
 

static __inline void waitch (  u_int8_t  waited  )  [static]
 

static __inline void wbinvd (  void   )  [static]
 

static __inline void write_eflags (  u_long  ef  )  [static]
 

static __inline void wrmsr (  u_int  msr,
u_int64_t  newval
)  [static]
 

static __inline void yield (   )  [static]
 


Generated on Wed May 24 23:05:55 2006 for LSE/OS by  doxygen 1.4.6