120 lines
1.6 KiB
ArmAsm
120 lines
1.6 KiB
ArmAsm
/*++
|
||
|
||
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
|