Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1.5 KiB

/*++
Copyright (c) 1989-1995 Microsoft Corporation
Module Name:
ioaccess.h
Abstract:
Definitions of function prototypes for accessing I/O ports and
memory on I/O adapters from display drivers.
Cloned from parts of nti386.h.
Author:
--*/
//
// Memory barriers on AMD64, X86 and IA64 are not required since the Io
// Operations are always garanteed to be executed in order
//
#if defined(_AMD64_) || defined(_X86_) || defined(_IA64_)
#define MEMORY_BARRIER() 0
#else
#error "No Target Architecture"
#endif
//
// I/O space read and write macros.
//
#if defined(_X86_)
#define READ_REGISTER_UCHAR(Register) (*(volatile UCHAR *)(Register))
#define READ_REGISTER_USHORT(Register) (*(volatile USHORT *)(Register))
#define READ_REGISTER_ULONG(Register) (*(volatile ULONG *)(Register))
#define WRITE_REGISTER_UCHAR(Register, Value) (*(volatile UCHAR *)(Register) = (Value))
#define WRITE_REGISTER_USHORT(Register, Value) (*(volatile USHORT *)(Register) = (Value))
#define WRITE_REGISTER_ULONG(Register, Value) (*(volatile ULONG *)(Register) = (Value))
#define READ_PORT_UCHAR(Port) inp (Port)
#define READ_PORT_USHORT(Port) inpw (Port)
#define READ_PORT_ULONG(Port) inpd (Port)
#define WRITE_PORT_UCHAR(Port, Value) outp ((Port), (Value))
#define WRITE_PORT_USHORT(Port, Value) outpw ((Port), (Value))
#define WRITE_PORT_ULONG(Port, Value) outpd ((Port), (Value))
#endif