summaryrefslogtreecommitdiffstats
path: root/private/ntos/inc/duoprom.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/inc/duoprom.h
downloadNT4.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/inc/duoprom.h')
-rw-r--r--private/ntos/inc/duoprom.h152
1 files changed, 152 insertions, 0 deletions
diff --git a/private/ntos/inc/duoprom.h b/private/ntos/inc/duoprom.h
new file mode 100644
index 000000000..ce79d1327
--- /dev/null
+++ b/private/ntos/inc/duoprom.h
@@ -0,0 +1,152 @@
+/*++
+
+Copyright (c) 1991 Microsoft Corporation
+
+Module Name:
+
+ duoprom.h
+
+Abstract:
+
+ This module is the header file that describes physical and virtual
+ address used by the PROM monitor and boot code.
+
+Author:
+
+ Lluis Abello (lluis) 5-Apr-1993
+
+Revision History:
+
+--*/
+
+#ifndef _DUOPROM_
+#define _DUOPROM_
+
+//
+// Define virtual/physical base address pairs for boot mapping.
+//
+
+#define DEVICE_VIRTUAL_BASE 0xe0000000 // virtual base of device space
+#define DEVICE_PHYSICAL_BASE 0x80000000 // physical base of device space
+
+#define VIDEO_CONTROL_VIRTUAL_BASE 0xe0200000 // virtual base of video control
+#define VIDEO_CONTROL_PHYSICAL_BASE 0x60000000 // physical base of video control
+
+#define EXTENDED_VIDEO_CONTROL_VIRTUAL_BASE 0xe0400000 // virtual base of extended video control
+#define EXTENDED_VIDEO_CONTROL_PHYSICAL_BASE 0x60200000 // physical base of extended video control
+
+#define VIDEO_MEMORY_VIRTUAL_BASE 0xe0800000 // virtual base of video memory
+#define VIDEO_MEMORY_PHYSICAL_BASE 0x40000000 // physical base of video memory
+
+#define PROM_VIRTUAL_BASE 0xe1000000 // virtual base of boot PROM
+#define PROM_PHYSICAL_BASE 0xfff00000 // physical base of boot PROM
+
+#define EEPROM_VIRTUAL_BASE PROM_VIRTUAL_BASE+0x40000 // virtual base of boot PROM
+#define EEPROM_PHYSICAL_BASE 0xfff40000 // physical base of boot PROM
+
+#define EISA_IO_VIRTUAL_BASE 0xe2000000 // virtual base of EISA I/O
+#define EISA_EXTERNAL_IO_VIRTUAL_BASE 0xe4000000 // virtual base of EISA I/O
+#define EISA_IO_PHYSICAL_BASE 0x90000000 // physical base of EISA I/O
+
+#define EISA_MEMORY_VIRTUAL_BASE 0xe3000000 // virtual base of EISA memory
+#define EISA_MEMORY_PHYSICAL_BASE 0x91000000 // physical base of EISA memory
+
+#define PCR_VIRTUAL_BASE KiPcr // virtual address of PCR
+#define PCR_PHYSICAL_BASE 0x7ff000 // physical address of PCR
+
+#undef SP_PHYSICAL_BASE
+#define SP_VIRTUAL_BASE 0xffffa000 // virtual base of serial port
+#define SP_PHYSICAL_BASE 0x80006000 // physical base of serial port
+
+//
+// Define boot code device virtual addresses.
+//
+
+#undef DMA_VIRTUAL_BASE
+#define DMA_VIRTUAL_BASE 0xe0000000 // virtual base of DMA control
+
+#define NET_VIRTUAL_BASE 0xe0001000 // virtual base of ethernet control
+
+#define SCSI1_VIRTUAL_BASE 0xe0002000 // virtual base os SCSI control
+
+#define SCSI2_VIRTUAL_BASE 0xe0003000 // virtual base of floppy control
+
+#define RTC_VIRTUAL_BASE 0xe0004000 // virtual base of realtime clock
+
+#define KEYBOARD_VIRTUAL_BASE 0xe0005000 // virtual base of keyboard control
+
+#define COMPORT1_VIRTUAL_BASE 0xe0006000 // virtual base of comport 1 control
+
+#define COMPORT2_VIRTUAL_BASE 0xe0007000 // virtual base of comport 2 control
+
+#define PARALLEL_VIRTUAL_BASE 0xe0008000 // virtual base of parallel control
+
+#define NVRAM_VIRTUAL_BASE 0xe0009000 // virtual base of NVRAM
+
+#define FLASH_ENABLE_VIRTUAL_BASE 0xe000d000 // virtual base of FLASH EEPROM control
+
+#define DIAGNOSTIC_VIRTUAL_BASE 0xe000e000 // virtual base of diagnostic control
+
+#define INTERRUPT_VIRTUAL_BASE 0xe000f000 // virtual base of interrupt enable
+
+#define VIDEO_CURSOR_VIRTUAL_BASE 0xe0208000 // virtual base of cursor control
+
+#define VIDEO_ID_VIRTUAL_BASE 0xe0210000 // virtual base of video id register
+
+#define VIDEO_RESET_VIRTUAL_BASE 0xe0220000 // virtual base of reset register
+
+#define EXCLUSIVE_PAGE_VIRTUAL_BASE 0xc0000000 // virtual base of exclusive page
+
+#define SHARED_PAGE_VIRTUAL_BASE 0xc0001000 // virtual base of shared page
+
+#define EXCLUSIVE_PAGE_PHYSICAL_BASE 0x800000 // physical base of exclusive page
+
+#define SHARED_PAGE_PHYSICAL_BASE 0x801000 // physical base of shared page
+
+
+//
+// Define base address and limit of DMA translation table.
+//
+
+#define DMA_TRANSLATION_BASE 0xa0001000 // translation table base address
+#define DMA_TRANSLATION_LIMIT 0x1000 // translation table limit
+
+//
+// Define pointer to DMA control registers.
+//
+
+#define DMA_CONTROL ((volatile PDMA_REGISTERS)(DMA_VIRTUAL_BASE))
+
+//
+// Define pointer to interrupt source register.
+//
+#undef INTERRUPT_SOURCE
+#define INTERRUPT_SOURCE (&DMA_CONTROL->LocalInterruptAcknowledge.Long)
+
+
+//
+// Define device interrupt identification values.
+//
+
+#define PARALLEL_DEVICE 0x4 // Parallel port device interrupt id
+#define VIDEO_DEVICE 0xC // Video device interrupt id
+#define ETHERNET_DEVICE 0x10 // Ethernet device interrupt id
+#define SCSI1_DEVICE 0x14 // SCSI device interrupt id
+#define SCSI2_DEVICE 0x18 // SCSI device interrupt id
+#define KEYBOARD_DEVICE 0x1C // Keyboard device interrupt id
+#define MOUSE_DEVICE 0x20 // Mouse device interrupt id
+#define SERIAL0_DEVICE 0x24 // Serial port 0 device interrupt id
+#define SERIAL1_DEVICE 0x28 // Serial port 1 device interrupt id
+
+//
+// Define low memory transfer vector address and TB index address.
+//
+
+#define TRANSFER_VECTOR (KSEG1_BASE + 0x400) // exception handler address
+
+//
+// Define TLB index to map Flash prom.
+//
+#define FLASH_PROM_TLB_INDEX 1
+
+#endif // _DUOPROM_