Revision 8ecc7913 vl.h
b/vl.h | ||
---|---|---|
1151 | 1151 |
|
1152 | 1152 |
#ifdef TARGET_PPC |
1153 | 1153 |
/* PowerPC hardware exceptions management helpers */ |
1154 |
ppc_tb_t *cpu_ppc_tb_init (CPUState *env, uint32_t freq); |
|
1154 |
typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); |
|
1155 |
typedef struct clk_setup_t clk_setup_t; |
|
1156 |
struct clk_setup_t { |
|
1157 |
clk_setup_cb cb; |
|
1158 |
void *opaque; |
|
1159 |
}; |
|
1160 |
static inline void clk_setup (clk_setup_t *clk, uint32_t freq) |
|
1161 |
{ |
|
1162 |
if (clk->cb != NULL) |
|
1163 |
(*clk->cb)(clk->opaque, freq); |
|
1164 |
} |
|
1165 |
|
|
1166 |
clk_setup_cb cpu_ppc_tb_init (CPUState *env, uint32_t freq); |
|
1155 | 1167 |
/* Embedded PowerPC DCR management */ |
1156 | 1168 |
typedef target_ulong (*dcr_read_cb)(void *opaque, int dcrn); |
1157 | 1169 |
typedef void (*dcr_write_cb)(void *opaque, int dcrn, target_ulong val); |
... | ... | |
1159 | 1171 |
int (*dcr_write_error)(int dcrn)); |
1160 | 1172 |
int ppc_dcr_register (CPUState *env, int dcrn, void *opaque, |
1161 | 1173 |
dcr_read_cb drc_read, dcr_write_cb dcr_write); |
1174 |
clk_setup_cb ppc_emb_timers_init (CPUState *env, uint32_t freq); |
|
1175 |
/* PowerPC 405 core */ |
|
1176 |
CPUPPCState *ppc405_init (const unsigned char *cpu_model, |
|
1177 |
clk_setup_t *cpu_clk, clk_setup_t *tb_clk, |
|
1178 |
uint32_t sysclk); |
|
1179 |
void ppc40x_core_reset (CPUState *env); |
|
1180 |
void ppc40x_chip_reset (CPUState *env); |
|
1181 |
void ppc40x_system_reset (CPUState *env); |
|
1182 |
/* */ |
|
1183 |
typedef struct ppc4xx_mmio_t ppc4xx_mmio_t; |
|
1184 |
int ppc4xx_mmio_register (CPUState *env, ppc4xx_mmio_t *mmio, |
|
1185 |
uint32_t offset, uint32_t len, |
|
1186 |
CPUReadMemoryFunc **mem_read, |
|
1187 |
CPUWriteMemoryFunc **mem_write, void *opaque); |
|
1188 |
ppc4xx_mmio_t *ppc4xx_mmio_init (CPUState *env, uint32_t base); |
|
1189 |
/* PowerPC 4xx peripheral local bus arbitrer */ |
|
1190 |
void ppc4xx_plb_init (CPUState *env); |
|
1191 |
/* PLB to OPB bridge */ |
|
1192 |
void ppc4xx_pob_init (CPUState *env); |
|
1193 |
/* OPB arbitrer */ |
|
1194 |
void ppc4xx_opba_init (CPUState *env, ppc4xx_mmio_t *mmio, uint32_t offset); |
|
1195 |
/* PowerPC 4xx universal interrupt controller */ |
|
1196 |
enum { |
|
1197 |
PPCUIC_OUTPUT_INT = 0, |
|
1198 |
PPCUIC_OUTPUT_CINT = 1, |
|
1199 |
PPCUIC_OUTPUT_NB, |
|
1200 |
}; |
|
1201 |
qemu_irq *ppcuic_init (CPUState *env, qemu_irq *irqs, |
|
1202 |
uint32_t dcr_base, int has_ssr, int has_vr); |
|
1203 |
/* SDRAM controller */ |
|
1204 |
void ppc405_sdram_init (CPUState *env, qemu_irq irq, int nbanks, |
|
1205 |
target_ulong *ram_bases, target_ulong *ram_sizes); |
|
1206 |
/* Peripheral controller */ |
|
1207 |
void ppc405_ebc_init (CPUState *env); |
|
1208 |
/* DMA controller */ |
|
1209 |
void ppc405_dma_init (CPUState *env, qemu_irq irqs[4]); |
|
1210 |
/* GPIO */ |
|
1211 |
void ppc405_gpio_init (CPUState *env, ppc4xx_mmio_t *mmio, uint32_t offset); |
|
1212 |
/* Serial ports */ |
|
1213 |
void ppc405_serial_init (CPUState *env, ppc4xx_mmio_t *mmio, |
|
1214 |
uint32_t offset, qemu_irq irq, |
|
1215 |
CharDriverState *chr); |
|
1216 |
/* On Chip Memory */ |
|
1217 |
void ppc405_ocm_init (CPUState *env, unsigned long offset); |
|
1218 |
/* I2C controller */ |
|
1219 |
void ppc405_i2c_init (CPUState *env, ppc4xx_mmio_t *mmio, uint32_t offset); |
|
1220 |
/* PowerPC 405 microcontrollers */ |
|
1221 |
CPUState *ppc405cr_init (target_ulong ram_bases[4], target_ulong ram_sizes[4], |
|
1222 |
uint32_t sysclk, qemu_irq **picp, |
|
1223 |
ram_addr_t *offsetp); |
|
1224 |
CPUState *ppc405ep_init (target_ulong ram_bases[2], target_ulong ram_sizes[2], |
|
1225 |
uint32_t sysclk, qemu_irq **picp, |
|
1226 |
ram_addr_t *offsetp); |
|
1162 | 1227 |
#endif |
1163 | 1228 |
void PREP_debug_write (void *opaque, uint32_t addr, uint32_t val); |
1164 | 1229 |
|
Also available in: Unified diff