diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/fw/mips/selftest.h | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/ntos/fw/mips/selftest.h')
-rw-r--r-- | private/ntos/fw/mips/selftest.h | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/private/ntos/fw/mips/selftest.h b/private/ntos/fw/mips/selftest.h new file mode 100644 index 000000000..4afa2db0e --- /dev/null +++ b/private/ntos/fw/mips/selftest.h @@ -0,0 +1,224 @@ +/*++ + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + selftest.c + +Abstract: + + This module contains definitions for selftest.c + +Author: + + Lluis Abello (lluis) 03-Jan-1991 + +Environment: + + +Revision History: + +--*/ +// +// Video Memory Test +// + +#define VIDEO_MEMORY_SIZE 0x200000 // 2 MB +#define DISPLAY_MEMORY_SIZE 0x100000 // 1 MB + +// +// Memory test stuff +// + +#define TESTED_KB (FW_TOP_ADDRESS>>10) +#define KB_OF_MEMORY (MEMORY_SIZE>>10) // +#define KB_PER_TEST 0x400 // 1024K at a time +#define NVRAM_TEST_END 0x800 + +typedef ULONG (* TestRoutine)(VOID); +typedef VOID (* LED_ROUTINE)(ULONG); + +#ifndef DUO +#define PROM_BASE (KSEG1_BASE | 0x1fc00000) +#else +#define PROM_BASE (EEPROM_VIRTUAL_BASE) +#endif + +#define PROM_ENTRY(x) (PROM_BASE + ((x) * 8)) + +#define PutLedDisplay ((LED_ROUTINE) PROM_ENTRY(14)) +// +// Declare static variables +// +extern PUCHAR TranslationTable; +extern UCHAR StationAddress[6]; + +extern BOOLEAN LanAddress; // True if station address is OK False Otherwise +extern BOOLEAN ConfigurationBit; // read value from diagnostic register +extern BOOLEAN LoopOnError; // read value from diagnostic register +extern BOOLEAN IgnoreErrors; // read value from diagnostic register +extern BOOLEAN VideoReady; // True if display on video monitor + +extern volatile LONG TimerTicks; // Counter for timeouts + +// +// Routine declaration. +// +BOOLEAN ExecuteTest(TestRoutine,ULONG); +VOID RomPutLine(CHAR *); +ULONG RomVideoMemory(); +ULONG RomReadMergeWrite(); +ULONG RomIOCacheTest(); +ULONG RomSonicResetTest(); +ULONG RomSonicLoopBackTest(); +ULONG RomFloppyResetTest(); +ULONG RomScsiResetTest(); +ULONG RomSerialResetTest(); +ULONG RomSerial1RegistersTest(); +ULONG RomSerial2RegistersTest(); +ULONG RomSerial1LoopBackTest(); +ULONG RomSerial2LoopBackTest(); +ULONG RomParallelRegistersTest(); +ULONG RomScsiRegistersTest(); +ULONG RomFloppyRegistersTest(); +ULONG RomSonicRegistersTest(); +ULONG InterruptControllerTest(); +ULONG ConnectInterrupts(); +ULONG DisableInterrupts(); +ULONG RomRTCTest(); +ULONG InitMouse(); +ULONG InitKeyboard(); +ULONG InitKeyboardController(); +ULONG RomNvramTest(); +VOID RomBeep(); +ULONG RomInitISP (VOID); + +#define CHECK_ULONG(Address,Value) if (READ_REGISTER_ULONG(Address) != Value) {\ + Errors++;\ + } +#define CHECK_USHORT(Address,Value) if ((Tmp=READ_REGISTER_USHORT(Address)) != Value) { \ + FwPrint("Expected %lx received %lx\r\n",Value,Tmp);\ + Errors++;\ + } +#define CHECK_UCHAR(Address,Value) if (READ_REGISTER_UCHAR(Address) != Value) { \ + Errors++;\ + } + + +#ifdef DUO + +typedef +ULONG +(*PPROCESSOR_TASK_ROUTINE) ( + IN PVOID Data + ); + +BOOLEAN +WaitForIpInterrupt(); + +VOID +WaitForAsIpInterrupt(); + +BOOLEAN +WaitForBsIpInterrupt( + IN ULONG Timeout + ); + +VOID +ProcessorBMain( + ); + +BOOLEAN +ProcessorBSelftest( + IN VOID + ); + +VOID +WriteMemoryAddressTest( + ULONG StartAddress, + ULONG Size, + ULONG Xorpattern + ); + +PULONG +CheckMemoryAddressTest( + ULONG StartAddress, + ULONG Size, + ULONG Xorpattern, + ULONG LedDisplayValue + ); + +VOID +WriteVideoMemoryAddressTest( + ULONG StartAddress, + ULONG Size + ); + +ULONG +CheckVideoMemoryAddressTest( + ULONG StartAddress, + ULONG Size + ); + +typedef struct _PROCESSOR_B_TASK_VECTOR { + PPROCESSOR_TASK_ROUTINE Routine; + PVOID Data; + ULONG ReturnValue; + } PROCESSOR_B_TASK_VECTOR, *PPROCESSOR_B_TASK_VECTOR; + + +extern volatile PROCESSOR_B_TASK_VECTOR ProcessorBTask; + +typedef struct _PROCESSOR_B_TEST { + PPROCESSOR_TASK_ROUTINE Routine; + PVOID Data; + } PROCESSOR_B_TEST, *PPROCESSOR_B_TEST; + +// +// Define data structures for each of processor B's tests. +// + +typedef struct _MEMORY_TEST_DATA { + ULONG StartAddress; + ULONG Size; + ULONG XorPattern; + ULONG LedDisplayValue; + } MEMORY_TEST_DATA, *PMEMORY_TEST_DATA; + +ULONG +ProcessorBMemoryTest( + IN PMEMORY_TEST_DATA MemoryData + ); + +ULONG +ProcessorBVideoMemoryTest( + IN PMEMORY_TEST_DATA MemoryData + ); + +VOID +ProcessorBSystemBoot( + IN VOID + ); + +ULONG +RomScsiResetTest( + IN VOID + ); + +ULONG +CoherencyTest( + IN PVOID CoherentPage + ); + +BOOLEAN +IsIpInterruptSet( + IN VOID + ); + +VOID +RestartProcessor( + IN PRESTART_BLOCK RestartBlock + ); + +#endif |