LanGuardian - Memory Map
#define NVRAM (struct nvram *) 0xA0040000
#define NCR710 (struct ncr_siop *) 0xA0018000
#define FD (struct fd *) 0xA0003FC0 /* (0xA0000000+(0x3FC<<2)) */
#define TTY00 (struct NS16550 *) 0xA0003FE0 /* (0xA0000000+(0x3FE<<2)) */
#define TTY01 (struct NS16550 *) 0xA0003BE0 /* (0xA0000000+(0x3BE<<2)) */
#define ETHER1 0xA0001400
#define ETHER0 0xA0001000
#define LEDS 0xA0000C3C
#define FPGA_MISC 0xA0000C1C /* DRAM control */
#define FPGA (struct fpga *) 0xA0000C00
#define FPGA_PWR 0xA000040E /* PCMCIA power */
#define PCMCIACTRL 0xA0000400
#define HD64570 0xA0000000
struct NS16550 {
unsigned char rbr; /* 0 */
unsigned char _unused0[3];
unsigned char ier; /* 1 */
unsigned char _unused1[3];
unsigned char fcr; /* 2 */
unsigned char _unused2[3];
unsigned char lcr; /* 3 */
unsigned char _unused3[3];
unsigned char mcr; /* 4 */
unsigned char _unused4[3];
unsigned char lsr; /* 5 */
unsigned char _unused5[3];
unsigned char msr; /* 6 */
unsigned char _unused6[3];
unsigned char scr; /* 7 */
unsigned char _unused7[3];
};
#define NVRAM_SIZE 0x800
#define NVRAM_PARAMS_SIZE 0x200
#define BOOTP_MODE 0
#define TFTP_MODE 1
/*
** NOTE: The actual layout of these items in the machine's
** memory map is with only the 8 most significant bits of
** each 32-bit word actually having data. This is due to
** only partial decoding for addressing lines (to save gates
** on the system FPGA).
*/
struct nvram {
/* These items are checksummed */
struct nvram_params {
unsigned char dram_mode; /* MUST BE FIRST */
unsigned char dram_mode_signature[3]; /* 0xCAFE66 */
unsigned char ethernet1_station_address[6];
unsigned char ethernet2_station_address[6];
unsigned char auto_boot;
int auto_boot_timeout;
unsigned char boot_dev[16];
unsigned char boot_spec[64];
/* Boot/Power-up options */
unsigned char run_post;
unsigned char secure_network_load;
unsigned char boot_mode;
int ethernet_ip_address[2];
int ethernet_server_address[2];
unsigned char config_file[64];
unsigned long board_serial_number;
unsigned char board_key0[8], board_key1[8], board_key2[8];
} params;
unsigned char FILLER0[NVRAM_PARAMS_SIZE-sizeof(struct nvram_params)];
/* These items can change without modifiying checksum */
struct nvram_temps {
unsigned char sense_switch;
unsigned char reboot_spec[64];
} temp_params;
unsigned char FILLER1[NVRAM_SIZE-(NVRAM_PARAMS_SIZE+sizeof(struct nvram_temps)+2)];
unsigned short cksum;
};
struct fpga {
uchar timer_hi;
uchar _unused0[3];
uchar timer_lo;
uchar _unused1[3];
uchar timer_csr;
uchar _unused2[3+4];
uchar irq5;
uchar _unused3[3];
uchar irq4;
uchar _unused4[3];
uchar attrs;
uchar _unused5[3];
uchar misc;
uchar _unused6[3];
uchar floppy_DMA;
uchar _unused7[3];
uchar floppy_DMA_TC;
uchar _unused8[3+(5*4)];
ushort leds;
};
struct fd {
unsigned char sra; /* 0 - Status register A */
unsigned char _filler0[3]; /* High byte only */
unsigned char srb; /* 1 - Status register B */
unsigned char _filler1[3]; /* High byte only */
unsigned char dcr; /* 2 - Device/motor control */
unsigned char _filler2[3]; /* High byte only */
unsigned char _unused1[1];
unsigned char _filler3[3]; /* High byte only */
unsigned char stat; /* 4 - NEC 765 Main Status Register */
unsigned char _filler4[3]; /* High byte only */
unsigned char data; /* 5 - NEC 765 Data Register */
unsigned char _filler5[3]; /* High byte only */
unsigned char _unused2[1];
unsigned char _filler6[3]; /* High byte only */
unsigned char rate; /* 7 - Control register */
unsigned char _filler7[3]; /* High byte only */
};
Comments or Questions?
send email to : languard (at) pix (dot) net
Last Updated: $Date: 2003/01/23 22:50:01 $