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  )     ((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,
 )     ((__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