summaryrefslogtreecommitdiffstats
path: root/private/ntos/inc/duoprom.h
blob: ce79d1327bd7744c30f10b6441b6b9e5098d2a04 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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_