/* * 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;