gem5/system/alpha/h/xxm.h
2003-11-14 10:52:42 -05:00

234 lines
9.3 KiB
C

#ifndef __XXM_H_LOADED
#define __XXM_H_LOADED
/*****************************************************************************
Copyright © 1993, Digital Equipment Corporation, Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the copyright notice and this permission notice appear in all copies
of software and supporting documentation, and that the name of Digital not
be used in advertising or publicity pertaining to distribution of the software
without specific, written prior permission. Digital grants this permission
provided that you prominently mark, as not part of the original, any
modifications made to this software or documentation.
Digital Equipment Corporation disclaims all warranties and/or guarantees
with regard to this software, including all implied warranties of fitness for
a particular purpose and merchantability, and makes no representations
regarding the use of, or the results of the use of, the software and
documentation in terms of correctness, accuracy, reliability, currentness or
otherwise; and you rely on the software, documentation and results solely at
your own risk.
******************************************************************************/
/*
* $Id: xxm.h,v 1.1.1.1 1997/10/30 23:27:18 verghese Exp $;
*/
/*
* $Log: xxm.h,v $
* Revision 1.1.1.1 1997/10/30 23:27:18 verghese
* current 10/29/97
*
* Revision 1.3 1996/04/15 16:28:36 berc
* adding PCI ifdefs
*
* Revision 1.1 1995/06/07 03:27:16 berc
* Initial revision
*
*/
#ifdef XXM
#define KSEG ((ul)0xfffffc0000000000)
#define PHYS_TO_KSEG(x)(((ul)x) | KSEG)
#define KSEG_TO_PHYS(x)(((ul)x) & ~KSEG)
#define BANNER "SRC XXX Debug Monitor - Se Habla Peligro"
#define PROMPT "XXX> "
/****************************************************************************
* Basic *
****************************************************************************/
#define NEEDPCI
/*#define NEEDDEBUGGER*/
/*#define NO_ETHERNET*/
/*#define NEEDWAVELAN*/
#define NEEDDEPCM
#define NEED21040
/*#define TRACE_ENABLE*/
/****************************************************************************
* System Address Space *
****************************************************************************/
#define MINIMUM_SYSTEM_MEMORY 0x4000000 /* 64MB */
#define DMA_BUFF_BASE (KSEG | (ul)0x3000000) /* Ether buffers */
#define AOUT_LOAD_ADDR (KSEG | (ul)0x2000000) /* Kernel image */
/****************************************************************************
* PCI I/O Address Space *
****************************************************************************/
/*
* Allocate PCI IO space above the 10-bit ISA space
*/
#define PCI_IO_BASE 0x0400
/* 2 gig + 16mb for slot D + two 16 meg windows for the PCMCIA cards (if any) */
#define PCI_MEM_BASE (1 << 31) + (3 * (1 << 24))
/*
* Where does the SROM leave PCMCIA slot D?
*/
#define PCMCIA_SLOT_D_BASE 0x0
/*
* ROM definitions.
*/
#ifdef undef
#define NEEDFLASHMEMORY
#define INTEL_28F008SA
#define ROMBASE 0xFFF80000
#define ROMSIZE 0x100000
#define ROMINC 0x1
#endif
/****************************************************************************
* PCI I/O Address Space Access *
****************************************************************************/
/* XXM ADDRESS BIT DEFINITIONS
*
* PCI Sparse Memory Space (2GB)
*
* 3 3 3 3|3 3 3 3|3 3 2 2|2 2 2 2|2 2 2 2|1 1 1 1|1 1 1 1|1 1
* 9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |1|0|0| |A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|S|S|S|S|0| | |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | \_/ \________________________________________________________/ \_____/ |
* | | Address (pA[31] ==1, pA[30..02]) | MBZ
* | +-Space identifier |
* +-- IO space, not cached Transfer Length --+
*
*
* PCI Sparce Other Space (16MB)
*
* 3 3 3 3|3 3 3 3|3 3 2 2|2 2 2 2|2 2 2 2|1 1 1 1|1 1 1 1|1 1
* 9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |1|0|1| | | | | |T|T|T|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|S|S|S|S|0| | |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | \_/ \___/ \_________________________________________/ \_____/ |
* | | | Address (pA[31..24] == 0 pA[23..02]) | MBZ
* | +-Space +x00 - memory, x01 - I/O x10 - Type0, x11 - Type1 |
* +-- IO space, not cached Transfer Length --+
*
*
* PCI Dense Memory Space (2GB)
*
* 3 3 3 3|3 3 3 3|3 3 2 2|2 2 2 2|2 2 2 2|1 1 1 1|1 1 1 1|1 1
* 9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |1|1|0| | | | | | |A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A|A| | |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | \_/ \________________________________________________________/
* | | Address (pA[31] ==1, pA[30..02])
* | +-Space identifier
* +-- IO space, not cached
*
*/
#define BYTE_ENABLE_SHIFT 5
#define TRANSFER_LENGTH_SHIFT 3
#define IO_MASK 0xffffff /* IO mask is 24 bits */
#define PCI_MEM ((ul)0x400<<29) /* CPU Adr[39:29]=0x400 select PCI Mem. */
#define PCI_IO ((ul)0x501<<29) /* CPU Adr[39:29]=0x501 select PCI I/O. */
#define PCI_CFG0 ((ul)0x502<<29) /* CPU Adr[39:29]=0x502 select PCI Cfg. */
#define PCI_CFG1 ((ul)0x503<<29) /* CPU Adr[39:29]=0x503 select PCI Cfg. */
#define PCI_MEM_BITS(a) ((PCI_MEM >> BYTE_ENABLE_SHIFT) | a)
#define PCI_IO_BITS(a) ((PCI_IO >> BYTE_ENABLE_SHIFT) | a)
#define PCI_CFG0_BITS(a) ((PCI_CFG0 >> BYTE_ENABLE_SHIFT) | a)
#define PCI_CFG1_BITS(a) ((PCI_CFG1 >> BYTE_ENABLE_SHIFT) | a)
/****************************************************************************
* Slot D Physical Address Map *
****************************************************************************/
#define SLOT_D_ROM PCI_MEM_BITS(0x000000)
#define SLOT_D_AUDIO_RAM PCI_MEM_BITS(0x100000)
#define SLOT_D_KEYBOARD PCI_MEM_BITS(0x120000)
#define SLOT_D_AUDIO_CODEC PCI_MEM_BITS(0x130000)
#define SLOT_D_COM1 PCI_MEM_BITS(0x140000)
#define SLOT_D_COM2 PCI_MEM_BITS(0x150000)
#define SLOT_D_CLOCK_ADDR PCI_MEM_BITS(0x160000)
#define SLOT_D_CLOCK_DATA PCI_MEM_BITS(0x170000)
#define SLOT_D_PCI_ERROR_REGISTER PCI_MEM_BITS(0x180000)
#define SLOT_D_SCSI PCI_MEM_BITS(0x190000)
#define SLOT_D_AUDIO_PLAY_ADDR PCI_MEM_BITS(0x1a0000)
#define SLOT_D_AUDIO_PLAY_LIMIT PCI_MEM_BITS(0x1b0000)
#define SLOT_D_AUDIO_CAPTURE_ADDR PCI_MEM_BITS(0x1c0000)
#define SLOT_D_AUDIO_CAPTURE_LIMIT PCI_MEM_BITS(0x1d0000)
#define SLOT_D_INTERRUPT_STATUS PCI_MEM_BITS(0x1e0000)
#define SLOT_D_INTERRUPT_ENABLE PCI_MEM_BITS(0x1f0000)
/****************************************************************************
* UART Definitions *
****************************************************************************/
#define com1Rbr (SLOT_D_COM1 | (0x0 << 1))
#define com1Thr (SLOT_D_COM1 | (0x0 << 1))
#define com1Ier (SLOT_D_COM1 | (0x1 << 1))
#define com1Iir (SLOT_D_COM1 | (0x2 << 1))
#define com1Lcr (SLOT_D_COM1 | (0x3 << 1))
#define com1Mcr (SLOT_D_COM1 | (0x4 << 1))
#define com1Lsr (SLOT_D_COM1 | (0x5 << 1))
#define com1Msr (SLOT_D_COM1 | (0x6 << 1))
#define com1Scr (SLOT_D_COM1 | (0x7 << 1))
#define com1Dll (SLOT_D_COM1 | (0x8 << 1))
#define com1Dlm (SLOT_D_COM1 | (0x9 << 1))
#define com2Rbr (SLOT_D_COM2 | (0x0 << 1))
#define com2Thr (SLOT_D_COM2 | (0x0 << 1))
#define com2Ier (SLOT_D_COM2 | (0x1 << 1))
#define com2Iir (SLOT_D_COM2 | (0x2 << 1))
#define com2Lcr (SLOT_D_COM2 | (0x3 << 1))
#define com2Mcr (SLOT_D_COM2 | (0x4 << 1))
#define com2Lsr (SLOT_D_COM2 | (0x5 << 1))
#define com2Msr (SLOT_D_COM2 | (0x6 << 1))
#define com2Scr (SLOT_D_COM2 | (0x7 << 1))
#define com2Dll (SLOT_D_COM2 | (0x8 << 1))
#define com2Dlm (SLOT_D_COM2 | (0x9 << 1))
#define lptDr 0x0
#define lptSr 0x0
#define lptCr 0x0
#define lptSTB 0x0
#define lptAFD 0x0
#define lptnInit 0x0
#define lptSlct 0x0
#define lptIrq 0x0
#define lptDir 0x0
#define lptDly 100000
#define RTCADDR SLOT_D_CLOCK_ADDR
#define RTCDATA SLOT_D_CLOCK_DATA
/* 114 bytes of NVRAM in the clock chip */
#define RTCRAM 114
#define ROMBASE SLOT_D_ROM
#define ROMINC 2 /* Byte wide, with bytes in low half of 16-bit word */
#define ROMSIZE (512 * 1024)
/* Map 16MB of slot A space at offset 16MB of IO space */
#define SLOT_A_IO_BASE PCI_IO_BITS(0x1000000)
#endif /* XXM */
#endif /* __XXM_H_LOADED */