Revision 99a0949b target-ppc/cpu.h

b/target-ppc/cpu.h
70 70

  
71 71
/*****************************************************************************/
72 72
/* MMU model                                                                 */
73
typedef enum powerpc_mmu_t powerpc_mmu_t;
74
enum powerpc_mmu_t {
73
typedef enum powerpc_mmu e_powerpc_mmu;
74
enum powerpc_mmu {
75 75
    POWERPC_MMU_UNKNOWN    = 0x00000000,
76 76
    /* Standard 32 bits PowerPC MMU                            */
77 77
    POWERPC_MMU_32B        = 0x00000001,
......
104 104

  
105 105
/*****************************************************************************/
106 106
/* Exception model                                                           */
107
typedef enum powerpc_excp_t powerpc_excp_t;
108
enum powerpc_excp_t {
107
typedef enum powerpc_excp e_powerpc_excp;
108
enum powerpc_excp {
109 109
    POWERPC_EXCP_UNKNOWN   = 0,
110 110
    /* Standard PowerPC exception model */
111 111
    POWERPC_EXCP_STD,
......
258 258

  
259 259
/*****************************************************************************/
260 260
/* Input pins model                                                          */
261
typedef enum powerpc_input_t powerpc_input_t;
262
enum powerpc_input_t {
261
typedef enum powerpc_input e_powerpc_input;
262
enum powerpc_input {
263 263
    PPC_FLAGS_INPUT_UNKNOWN = 0,
264 264
    /* PowerPC 6xx bus                  */
265 265
    PPC_FLAGS_INPUT_6xx,
......
278 278
#define PPC_INPUT(env) (env->bus_model)
279 279

  
280 280
/*****************************************************************************/
281
typedef struct ppc_def_t ppc_def_t;
282
typedef struct opc_handler_t opc_handler_t;
281
typedef struct ppc_def a_ppc_def;
282
typedef struct opc_handler an_opc_handler;
283 283

  
284 284
/*****************************************************************************/
285 285
/* Types used to describe some PowerPC registers */
286 286
typedef struct CPUPPCState CPUPPCState;
287
typedef struct ppc_tb_t ppc_tb_t;
288
typedef struct ppc_spr_t ppc_spr_t;
289
typedef struct ppc_dcr_t ppc_dcr_t;
290
typedef union ppc_avr_t ppc_avr_t;
291
typedef union ppc_tlb_t ppc_tlb_t;
287
typedef struct ppc_tb a_ppc_tb;
288
typedef struct ppc_spr a_ppc_spr;
289
typedef struct ppc_dcr a_ppc_dcr;
292 290

  
293 291
/* SPR access micro-ops generations callbacks */
294
struct ppc_spr_t {
292
struct ppc_spr {
295 293
    void (*uea_read)(void *opaque, int gpr_num, int spr_num);
296 294
    void (*uea_write)(void *opaque, int spr_num, int gpr_num);
297 295
#if !defined(CONFIG_USER_ONLY)
......
304 302
};
305 303

  
306 304
/* Altivec registers (128 bits) */
307
union ppc_avr_t {
305
union ppc_avr {
308 306
    float32 f[4];
309 307
    uint8_t u8[16];
310 308
    uint16_t u16[8];
......
316 314
};
317 315

  
318 316
/* Software TLB cache */
319
typedef struct ppc6xx_tlb_t ppc6xx_tlb_t;
320
struct ppc6xx_tlb_t {
317
typedef struct ppc6xx_tlb a_ppc6xx_tlb;
318
struct ppc6xx_tlb {
321 319
    target_ulong pte0;
322 320
    target_ulong pte1;
323 321
    target_ulong EPN;
324 322
};
325 323

  
326
typedef struct ppcemb_tlb_t ppcemb_tlb_t;
327
struct ppcemb_tlb_t {
328
    target_phys_addr_t RPN;
324
typedef struct ppcemb_tlb a_ppcemb_tlb;
325
struct ppcemb_tlb {
326
    a_target_phys_addr RPN;
329 327
    target_ulong EPN;
330 328
    target_ulong PID;
331 329
    target_ulong size;
......
333 331
    uint32_t attr; /* Storage attributes */
334 332
};
335 333

  
336
union ppc_tlb_t {
337
    ppc6xx_tlb_t tlb6;
338
    ppcemb_tlb_t tlbe;
334
union ppc_tlb {
335
    a_ppc6xx_tlb tlb6;
336
    a_ppcemb_tlb tlbe;
339 337
};
340 338

  
341
typedef struct ppc_slb_t ppc_slb_t;
342
struct ppc_slb_t {
339
typedef struct ppc_slb a_ppc_slb;
340
struct ppc_slb {
343 341
    uint64_t tmp64;
344 342
    uint32_t tmp;
345 343
};
......
590 588
    /* Address space register */
591 589
    target_ulong asr;
592 590
    /* PowerPC 64 SLB area */
593
    ppc_slb_t slb[64];
591
    a_ppc_slb slb[64];
594 592
    int slb_nr;
595 593
#endif
596 594
    /* segment registers */
......
607 605
    int last_way;    /* Last used way used to allocate TLB in a LRU way      */
608 606
    int id_tlbs;     /* If 1, MMU has separated TLBs for instructions & data */
609 607
    int nb_pids;     /* Number of available PID registers                    */
610
    ppc_tlb_t *tlb;  /* TLB is optional. Allocate them only if needed        */
608
    union ppc_tlb *tlb;  /* TLB is optional. Allocate them only if needed        */
611 609
    /* 403 dedicated access protection registers */
612 610
    target_ulong pb[4];
613 611
#endif
......
615 613
    /* Other registers */
616 614
    /* Special purpose registers */
617 615
    target_ulong spr[1024];
618
    ppc_spr_t spr_cb[1024];
616
    a_ppc_spr spr_cb[1024];
619 617
    /* Altivec registers */
620
    ppc_avr_t avr[32];
618
    union ppc_avr avr[32];
621 619
    uint32_t vscr;
622 620
    /* SPE registers */
623 621
    uint64_t spe_acc;
......
628 626

  
629 627
    /* Internal devices resources */
630 628
    /* Time base and decrementer */
631
    ppc_tb_t *tb_env;
629
    a_ppc_tb *tb_env;
632 630
    /* Device control registers */
633
    ppc_dcr_t *dcr_env;
631
    a_ppc_dcr *dcr_env;
634 632

  
635 633
    int dcache_line_size;
636 634
    int icache_line_size;
......
638 636
    /* Those resources are used during exception processing */
639 637
    /* CPU model definition */
640 638
    target_ulong msr_mask;
641
    powerpc_mmu_t mmu_model;
642
    powerpc_excp_t excp_model;
643
    powerpc_input_t bus_model;
639
    e_powerpc_mmu mmu_model;
640
    e_powerpc_excp excp_model;
641
    e_powerpc_input bus_model;
644 642
    int bfd_mach;
645 643
    uint32_t flags;
646 644
    uint64_t insns_flags;
......
667 665
    target_ulong nip;
668 666

  
669 667
    /* opcode handlers */
670
    opc_handler_t *opcodes[0x40];
668
    an_opc_handler *opcodes[0x40];
671 669

  
672 670
    /* Those resources are used only in Qemu core */
673 671
    target_ulong hflags;      /* hflags is a MSR & HFLAGS_MASK         */
......
683 681
};
684 682

  
685 683
/* Context used internally during MMU translations */
686
typedef struct mmu_ctx_t mmu_ctx_t;
687
struct mmu_ctx_t {
688
    target_phys_addr_t raddr;      /* Real address              */
689
    target_phys_addr_t eaddr;      /* Effective address         */
684
typedef struct mmu_ctx a_mmu_ctx;
685
struct mmu_ctx {
686
    a_target_phys_addr raddr;      /* Real address              */
687
    a_target_phys_addr eaddr;      /* Effective address         */
690 688
    int prot;                      /* Protection bits           */
691
    target_phys_addr_t pg_addr[2]; /* PTE tables base addresses */
689
    a_target_phys_addr pg_addr[2]; /* PTE tables base addresses */
692 690
    target_ulong ptem;             /* Virtual segment ID | API  */
693 691
    int key;                       /* Access key                */
694 692
    int nx;                        /* Non-execute area          */
......
707 705
int cpu_ppc_handle_mmu_fault (CPUPPCState *env, target_ulong address, int rw,
708 706
                              int mmu_idx, int is_softmmu);
709 707
#define cpu_handle_mmu_fault cpu_ppc_handle_mmu_fault
710
int get_physical_address (CPUPPCState *env, mmu_ctx_t *ctx, target_ulong vaddr,
708
int get_physical_address (CPUPPCState *env, a_mmu_ctx *ctx, target_ulong vaddr,
711 709
                          int rw, int access_type);
712 710
void do_interrupt (CPUPPCState *env);
713 711
void ppc_hw_interrupt (CPUPPCState *env);
......
738 736

  
739 737
void ppc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
740 738

  
741
const ppc_def_t *cpu_ppc_find_by_name (const char *name);
742
int cpu_ppc_register_internal (CPUPPCState *env, const ppc_def_t *def);
739
const a_ppc_def *cpu_ppc_find_by_name (const char *name);
740
int cpu_ppc_register_internal (CPUPPCState *env, const a_ppc_def *def);
743 741

  
744 742
/* Time-base and decrementer management */
745 743
#ifndef NO_CPU_IO_DEFS
......
797 795
}
798 796

  
799 797
/* Device control registers */
800
int ppc_dcr_read (ppc_dcr_t *dcr_env, int dcrn, target_ulong *valp);
801
int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, target_ulong val);
798
int ppc_dcr_read (a_ppc_dcr *dcr_env, int dcrn, target_ulong *valp);
799
int ppc_dcr_write (a_ppc_dcr *dcr_env, int dcrn, target_ulong val);
802 800

  
803 801
#define cpu_init cpu_ppc_init
804 802
#define cpu_exec cpu_ppc_exec

Also available in: Unified diff