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.
|
|
//
// No Check-in Source Code.
//
// Do not make this code available to non-Microsoft personnel
// without Intel's express permission
//
/**
*** Copyright (C) 1996-97 Intel Corporation. All rights reserved. *** *** The information and source code contained herein is the exclusive *** property of Intel Corporation and may not be disclosed, examined *** or reproduced in whole or in part without explicit written authorization *** from the company. **/
/*++
Copyright (c) 1995 Intel Corporation
Module Name:
simio.c
Abstract:
This module implements the I/O port access routines.
Author:
14-Apr-1995
Environment:
Kernel mode
Revision History:
--*/
#include "halp.h"
UCHAR READ_PORT_UCHAR ( PUCHAR Port ) { return (*(volatile UCHAR * const)(Port)); }
USHORT READ_PORT_USHORT ( PUSHORT Port ) { return (*(volatile USHORT * const)(Port)); }
ULONG READ_PORT_ULONG ( PULONG Port ) { return (*(volatile ULONG * const)(Port)); }
VOID WRITE_PORT_UCHAR ( PUCHAR Port, UCHAR Value ) { *(volatile UCHAR * const)(Port) = Value; KeFlushWriteBuffer(); }
VOID WRITE_PORT_USHORT ( PUSHORT Port, USHORT Value ) { *(volatile USHORT * const)(Port) = Value; KeFlushWriteBuffer(); }
VOID WRITE_PORT_ULONG ( PULONG Port, ULONG Value ) { *(volatile ULONG * const)(Port) = Value; KeFlushWriteBuffer(); }
VOID READ_PORT_BUFFER_UCHAR ( PUCHAR Port, PUCHAR Buffer, ULONG Count ) { PUCHAR ReadBuffer = Buffer; ULONG ReadCount;
for (ReadCount = 0; ReadCount < Count; ReadCount++, ReadBuffer++) { *ReadBuffer = *(volatile UCHAR * const)(Port); } }
VOID READ_PORT_BUFFER_USHORT ( PUSHORT Port, PUSHORT Buffer, ULONG Count ) { PUSHORT ReadBuffer = Buffer; ULONG ReadCount;
for (ReadCount = 0; ReadCount < Count; ReadCount++, ReadBuffer++) { *ReadBuffer = *(volatile USHORT * const)(Port); } }
VOID READ_PORT_BUFFER_ULONG ( PULONG Port, PULONG Buffer, ULONG Count ) { PULONG ReadBuffer = Buffer; ULONG ReadCount;
for (ReadCount = 0; ReadCount < Count; ReadCount++, ReadBuffer++) { *ReadBuffer = *(volatile ULONG * const)(Port); } }
VOID WRITE_PORT_BUFFER_UCHAR ( PUCHAR Port, PUCHAR Buffer, ULONG Count ) { PUCHAR WriteBuffer = Buffer; ULONG WriteCount;
for (WriteCount = 0; WriteCount < Count; WriteCount++, WriteBuffer++) { *(volatile UCHAR * const)(Port) = *WriteBuffer; KeFlushWriteBuffer(); } }
VOID WRITE_PORT_BUFFER_USHORT ( PUSHORT Port, PUSHORT Buffer, ULONG Count ) { PUSHORT WriteBuffer = Buffer; ULONG WriteCount;
for (WriteCount = 0; WriteCount < Count; WriteCount++, WriteBuffer++) { *(volatile USHORT * const)(Port) = *WriteBuffer; KeFlushWriteBuffer(); } }
VOID WRITE_PORT_BUFFER_ULONG ( PULONG Port, PULONG Buffer, ULONG Count ) { PULONG WriteBuffer = Buffer; ULONG WriteCount;
for (WriteCount = 0; WriteCount < Count; WriteCount++, WriteBuffer++) { *(volatile ULONG * const)(Port) = *WriteBuffer; KeFlushWriteBuffer(); } }
VOID HalHandleNMI( IN OUT PVOID NmiInfo ) { }
|