116 lines
2.8 KiB
C
116 lines
2.8 KiB
C
/*
|
|
* residual.h
|
|
*
|
|
* Structures for build PReP residual data as used in OpenHackWare
|
|
*
|
|
* Copyright (c) 2004-2005 Jocelyn Mayer
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License V2
|
|
* as published by the Free Software Foundation
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
/* Residual data */
|
|
#define MAX_CPUS 16
|
|
#define MAX_SEGS 64
|
|
#define MAX_MEMS 64
|
|
#define MAX_DEVS 256
|
|
|
|
typedef struct vital_t {
|
|
/* Motherboard dependents */
|
|
uint8_t model[32];
|
|
uint8_t serial[64];
|
|
uint16_t version;
|
|
uint16_t revision;
|
|
uint32_t firmware;
|
|
uint32_t NVRAM_size;
|
|
uint32_t nSIMMslots;
|
|
uint32_t nISAslots;
|
|
uint32_t nPCIslots;
|
|
uint32_t nPCMCIAslots;
|
|
uint32_t nMCAslots;
|
|
uint32_t nEISAslots;
|
|
uint32_t CPUHz;
|
|
uint32_t busHz;
|
|
uint32_t PCIHz;
|
|
uint32_t TBdiv;
|
|
/* CPU infos */
|
|
uint32_t wwidth;
|
|
uint32_t page_size;
|
|
uint32_t ChBlocSize;
|
|
uint32_t GrSize;
|
|
/* Cache and TLBs */
|
|
uint32_t cache_size;
|
|
uint32_t cache_type;
|
|
uint32_t cache_assoc;
|
|
uint32_t cache_lnsize;
|
|
uint32_t Icache_size;
|
|
uint32_t Icache_assoc;
|
|
uint32_t Icache_lnsize;
|
|
uint32_t Dcache_size;
|
|
uint32_t Dcache_assoc;
|
|
uint32_t Dcache_lnsize;
|
|
uint32_t TLB_size;
|
|
uint32_t TLB_type;
|
|
uint32_t TLB_assoc;
|
|
uint32_t ITLB_size;
|
|
uint32_t ITLB_assoc;
|
|
uint32_t DTLB_size;
|
|
uint32_t DTLB_assoc;
|
|
void *ext_vital;
|
|
} vital_t;
|
|
|
|
typedef struct PPC_CPU_t {
|
|
uint32_t pvr;
|
|
uint32_t serial;
|
|
uint32_t L2_size;
|
|
uint32_t L2_assoc;
|
|
} PPC_CPU_t;
|
|
|
|
typedef struct map_t {
|
|
uint32_t usage;
|
|
uint32_t base;
|
|
uint32_t count;
|
|
} map_t;
|
|
|
|
typedef struct PPC_mem_t {
|
|
uint32_t size;
|
|
} PPC_mem_t;
|
|
|
|
typedef struct PPC_device_t {
|
|
uint32_t busID;
|
|
uint32_t devID;
|
|
uint32_t serial;
|
|
uint32_t flags;
|
|
uint32_t type;
|
|
uint32_t subtype;
|
|
uint32_t interface;
|
|
uint32_t spare;
|
|
} PPC_device_t;
|
|
|
|
typedef struct residual_t {
|
|
uint32_t length;
|
|
uint16_t version;
|
|
uint16_t revision;
|
|
vital_t vital;
|
|
uint32_t nCPUs;
|
|
PPC_CPU_t CPUs[MAX_CPUS];
|
|
uint32_t max_mem;
|
|
uint32_t good_mem;
|
|
uint32_t nmaps;
|
|
map_t maps[MAX_SEGS];
|
|
uint32_t nmems;
|
|
PPC_mem_t memories[MAX_MEMS];
|
|
uint32_t ndevices;
|
|
PPC_device_t devices[MAX_DEVS];
|
|
/* TOFIX: No PNP devices */
|
|
} residual_t;
|