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 */
};
Last Updated: $Date: 2003/01/23 22:50:01 $