NT4/private/ntos/fw/mips/ioaccess.s

120 lines
1.6 KiB
ArmAsm
Raw Normal View History

2001-01-01 00:00:00 +01:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
ioaccess.s
Abstract:
This module contains routines to read and write to mapped addresses.
These are workarrounds for the R4000 bugs.
Author:
Lluis Abello (lluis) 15-May-91
Environment:
ROM Selftest.
Notes:
--*/
#include "ksmips.h"
.text
.set noreorder
.set noat
#ifdef R4000
LEAF_ENTRY(NtFlushByteBuffer)
nop
nop
sb a1,0(a0)
nop
nop
j ra
nop
.end
LEAF_ENTRY(NtFlushShortBuffer)
nop
nop
sh a1,0(a0)
nop
nop
j ra
nop
.end
LEAF_ENTRY(NtFlushLongBuffer)
nop
nop
sw a1,0(a0)
nop
nop
j ra
nop
.end
LEAF_ENTRY(NtReadByte)
lbu v0,0(a0)
nop
nop
j ra
nop
.end
LEAF_ENTRY(NtReadShort)
lhu v0,0(a0)
nop
nop
j ra
nop
.end
LEAF_ENTRY(NtReadLong)
lw v0,0(a0)
nop
nop
j ra
nop
.end
#endif
#ifdef R3000
SBTTL("Flush Write Buffer")
//++
//
// NTSTATUS
// NtFlushWriteBuffer (
// VOID
// )
//
// Routine Description:
//
// This function flushes the write buffer on the current processor.
//
// Arguments:
//
// None.
//
// Return Value:
//
// STATUS_SUCCESS.
//
//--
LEAF_ENTRY(FlushWriteBuffer)
.set noreorder
.set noat
nop // four nop's are required
nop //
nop //
nop //
10: //
bc0f 10b // if false, write buffer not empty
nop
j ra // return
.end FlushWritebuffer
#endif