Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

141 lines
7.9 KiB

//#pragma comment(exestr, "$Header: /usr4/winnt/SOURCES/ddk35/src/hal/halsni/mips/RCS/minidef.h,v 1.2 1994/11/09 07:54:26 holli Exp $")
/*+++
Copyright (c) 1993-1994 Siemens Nixdorf Informationssysteme AG
Module Name:
MINIdef.h
Abstract:
This file describes hardware addresses
for SNI Minitower and RM400-Tower which are not common
to all SNI machines.
---*/
#ifndef _MINIDEF_
#define _MINIDEF_
//
// define various masks for the interrupt sources register
//
/*
The interrupt Source Register on an MiniTower has the following bits:
7 6 5 4 3 2 1 0
+-------------------------------+
| 1 | 0 | 1 | 0 | 0 | x | 0 | 0 | 0 Low Activ; 1 High activ; x not connected
+-------------------------------+
|________ EISA/ ISA Interrupt (HalpEisaDispatch)
|____________ SCSI Interrupt (SCSI Driver)
|________________ EIP Interrupt (RM400 Tower Only/ Unused on Minitower)
|____________________ Timer 0 (HalpClockInterrupt1 on MULTI)
|________________________ Timer 1 (unused)
|____________________________ Ethernet (Net driver)
|________________________________ Push Button/Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
|____________________________________ Irq 9 (unused)
The second source for Interrupt Information is the MachineStatusRegister, which has the following bits:
7 6 5 4 3 2 1 0
+-------------------------------+
| x | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 Low Activ; 1 High activ; x not connected
+-------------------------------+
|________ ColdStart (unused)
|____________ OverTemperature Int. (dismiss only / unused on Tower)
|________________ EIP Interrupt (RM400 Tower Only/ unused on Minitower)
|____________________ Timer 1 (unused)
|________________________ Timer 0 (HalpClockInterrupt1 on MULTI)
|____________________________ PushButton (HalpInt0Dispatch or HalpInt1Dispatch)
|________________________________ Timeouts (HalpInt0Dispatch or HalpInt1Dispatch)
|____________________________________ not connected (unused)
*/
#define RM400_EISA_MASK 0x01 // these are the interrupts from the Eisa PC core
#define RM400_SCSI_MASK 0x02
#define RM400_SCSI_EISA_MASK 0x03
#define RM400_NET_MASK 0x20
#define RM400_PB_MASK 0x40
#define RM400_MSR_TEMP_MASK 0x02 // OverTemperature Interrupt in the MSR (RM400MT only) (high active)
#define RM400_MSR_EIP_MASK 0x04 // EIP Interrupt in the MSR (RM400 Tower only) (low active)
#define RM400_MSR_TIMER0_MASK 0x10 // Timer 0 Interrupt in the MachineStatusRegister (low active)
#define RM400_MSR_TIMER1_MASK 0x08 // Timer 1 Interrupt in the MachineStatusRegister (low active)
#define RM400_MSR_PB_MASK 0x20 // PushButton is also reported in the MachineStatusRegister (low actice)
#define RM400_MSR_TIMEOUT_MASK 0x40 // Timeout's are indicated in the MachineStatusRegister (low active)
#define RM400_INTERRUPT_MASK 0x5f
#define RM400_MSR_MASK 0xfc // 11111100 -> xor gives High active bits
#define RM400_TOWER_EISA_MASK 0x01
#define RM400_TOWER_SCSI_MASK 0x02
#define RM400_TOWER_SCSI_EISA_MASK 0x03
#define RM400_TOWER_EIP_MASK 0x04 // this is the famous EIP Interrupt ... (tower only)
#define RM400_TOWER_NET_MASK 0x20
#define RM400_TOWER_PB_MASK 0x40
#define RM400_TOWER_TIMEOUT_MASK 0x40
#define RM400_TOWER_INTERRUPT_MASK 0x5f
#define RM400_ONBOARD_CONTROL_PHYSICAL_BASE EISA_CONTROL_PHYSICAL_BASE
#define RM400_ONBOARD_MEMORY_PHYSICAL_BASE EISA_MEMORY_PHYSICAL_BASE
#define RM400_ONBOARD_IO (ONBOARD_CONTROL_PHYSICAL_BASE | KSEG1_BASE)
#define RM400_ONBOARD_MEMORY (ONBOARD_MEMORY_PHYSICAL_BASE | KSEG1_BASE)
//
// SNI ASIC registers
//
#define RM400_INTERRUPT_ACK_PHYSICAL_BASE 0x1c000000 // physical base of interrupt (ext. request) register
#define RM400_INTERRUPT_ACK_REGISTER 0xbc000000 // physical base | KSEG1_BASE
#define RM400_EISA_INT_ACK_PHYSICAL_BASE 0x1a000000 // physical base of EISA interrupt ack for the chipset
#define RM400_EISA_INT_ACK_REGISTER 0xba000000 // physical base | KSEG1_BASE
#define RM400_ONBOARD_INT_ACK_PHYSICAL_BASE RM400_EISA_INT_ACK_PHYSICAL_BASE // physical base of EISA interrupt ack for the chipset
#define RM400_ONBOARD_INT_ACK_REGISTER RM400_EISA_INT_ACK_REGISTER // physical base | KSEG1_BASE
#define RM400_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c020000 // physical base of interrupt source register
#define RM400_INTERRUPT_SOURCE_REGISTER 0xbc020000 // physical base | KSEG1_BASE
#define RM400_VESA_MAP_PHYSICAL_BASE 0x1c010000 // physical base of VLB map register
#define RM400_VESA_MAP 0xbc010000 // physical base | KSEG1_BASE
#define RM400_ISA_MAP_PHYSICAL_BASE 0x1c0e0000 // physical base of ISA map register (for BusMaster Devices)
#define RM400_ISA_MAP 0xbc0e0000 // physical base | KSEG1_BASE
#define RM400_LED_PHYSICAL_ADDR 0x1c090000 // LED Register physical
#define RM400_LED_ADDR 0xbc090000 // LED Register | KSEG1_BASE
#define RM400_MCR_PHYSICAL_ADDR 0x1c0b0000 // MachineConfigRegister
#define RM400_MCR_ADDR 0xbc0b0000 // MachineConfigRegister | KSEG1
#define RM400_MSR_PHYSICAL_ADDR 0x1c0a0000 // machine status register
#define RM400_MSR_ADDR 0xbc0a0000 // machine status register | KSEG1
//
// System Timer (i82C54) and RealTimeClock Chip on RM400-10 and Minitower
//
#define RM400_TIMER0_MASK 0x10
#define RM400_TIMER1_MASK 0x08
#define RM400_TIMER_MASK 0x18 // Timer0 and Timer1
#define RM400_EXTRA_TIMER_PHYSICAL_ADDR 0x1c040000 // physical base of Timer for system Clock
#define RM400_EXTRA_TIMER_ADDR 0xbc040000 // Timer for system Clock |KSEG1_BASE
#define RM400_TIMER0_ACK_ADDR 0xbc050000 // reset Timer0 Interrupt |KSEG1_BASE
#define RM400_TIMER1_ACK_ADDR 0xbc060000 // reset Timer1 Interrupt |KSEG1_BASE
#define RM400_NVRAM_PHYSICAL_BASE 0x1c080000 // physical base of nonvolatile RAM and RTC
#define RM400_REAL_TIME_CLOCK_ADDRESS 0x1c080000 // physical base of RTC
#define RM400_REAL_TIME_CLOCK 0xbc080000 // physical base of RTC | KSEG1_BASE
#define RM400_RESET_DBG_BUT 0xbc0f0000 // reset debugger int | KSEG1_BASE
#define RM400_RESET_TEMPBAT_INTR 0xbc0f0000 // reset Temperature/Battery int | KSEG1
//
// RM400 Tower (M8032)
// specific Addresses
//
#define RM400_TOWER_INTERRUPT_SOURCE_PHYSICAL_BASE 0x1c010000 // physical base of interrupt source register
#define RM400_TOWER_INTERRUPT_SOURCE_REGISTER 0xbc010000 // physical base | KSEG1_BASE
#define RM400_TOWER_VESA0_MAP_PHYSICAL_BASE 0x1c0c0000 // physical base of Vesa Slot 0 map register
#define RM400_TOWER_VESA0_MAP 0xbc0c0000 // physical base | KSEG1_BASE
#define RM400_TOWER_VESA1_MAP_PHYSICAL_BASE 0x1c0d0000 // physical base of Vesa Slot 1 map register
#define RM400_TOWER_VESA1_MAP 0xbc0d0000 // physical base | KSEG1_BASE
#endif // _MINIDEF_