summaryrefslogblamecommitdiffstats
path: root/private/ntos/inc/duoprom.h
blob: ce79d1327bd7744c30f10b6441b6b9e5098d2a04 (plain) (tree)























































































































































                                                                                                  
/*++

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_