Revision d9bce9d9 target-ppc/cpu.h

b/target-ppc/cpu.h
365 365
    PPC_E500_VECTOR = 0x20000000,
366 366
    /* PowerPC 4xx dedicated instructions     */
367 367
    PPC_4xx_COMMON  = 0x40000000,
368
    /* PowerPC 2.03 specification extensions */
369
    PPC_203         = 0x80000000,
368 370
};
369 371

  
370 372
/* CPU run-time flags (MMU and exception model) */
......
385 387
    PPC_FLAGS_MMU_403      = 0x00000005,
386 388
    /* Freescale e500 MMU model */
387 389
    PPC_FLAGS_MMU_e500     = 0x00000006,
390
    /* BookE MMU model */
391
    PPC_FLAGS_MMU_BOOKE    = 0x00000007,
388 392
    /* Exception model */
389 393
    PPC_FLAGS_EXCP_MASK    = 0x000000F0,
390 394
    /* Standard PowerPC exception model */
......
407 411
    PPC_FLAGS_EXCP_74xx    = 0x00000080,
408 412
    /* PowerPC 970 exception model */
409 413
    PPC_FLAGS_EXCP_970     = 0x00000090,
414
    /* BookE exception model */
415
    PPC_FLAGS_EXCP_BOOKE   = 0x000000A0,
410 416
};
411 417

  
412 418
#define PPC_MMU(env) (env->flags & PPC_FLAGS_MMU_MASK)
......
437 443
/* PowerPC 440 */
438 444
#define PPC_INSNS_440 (PPC_INSNS_EMB | PPC_CACHE_OPT | PPC_BOOKE |            \
439 445
                       PPC_4xx_COMMON | PPC_405_MAC | PPC_440_SPEC)
440
#define PPC_FLAGS_440 (PPC_FLAGS_TODO)
446
#define PPC_FLAGS_440 (PPC_FLAGS_MMU_BOOKE | PPC_FLAGS_EXCP_BOOKE)
441 447
/* Generic BookE PowerPC */
442 448
#define PPC_INSNS_BOOKE (PPC_INSNS_EMB | PPC_BOOKE | PPC_MEM_EIEIO |          \
443 449
                         PPC_FLOAT | PPC_FLOAT_OPT | PPC_CACHE_OPT)
444
#define PPC_FLAGS_BOOKE (PPC_FLAGS_MMU_SOFT_4xx | PPC_FLAGS_EXCP_40x)
450
#define PPC_FLAGS_BOOKE (PPC_FLAGS_MMU_BOOKE | PPC_FLAGS_EXCP_BOOKE)
445 451
/* e500 core */
446 452
#define PPC_INSNS_E500 (PPC_INSNS_EMB | PPC_BOOKE | PPC_MEM_EIEIO |           \
447 453
                        PPC_CACHE_OPT | PPC_E500_VECTOR)
......
502 508
typedef struct ppc_avr_t ppc_avr_t;
503 509
typedef struct ppc_tlb_t ppc_tlb_t;
504 510

  
505

  
506 511
/* SPR access micro-ops generations callbacks */
507 512
struct ppc_spr_t {
508 513
    void (*uea_read)(void *opaque, int spr_num);
......
619 624
     */
620 625
    target_ulong t0, t1, t2;
621 626
#endif
627
    ppc_avr_t t0_avr, t1_avr, t2_avr;
628

  
622 629
    /* general purpose registers */
623 630
    ppc_gpr_t gpr[32];
624 631
    /* LR */
......
674 681
    /* Altivec registers */
675 682
    ppc_avr_t avr[32];
676 683
    uint32_t vscr;
684
    /* SPE registers */
685
    ppc_gpr_t spe_acc;
686
    uint32_t spe_fscr;
677 687

  
678 688
    /* Internal devices resources */
679 689
    /* Time base and decrementer */
......
762 772
void do_store_dbatl (CPUPPCState *env, int nr, target_ulong value);
763 773
target_ulong do_load_sdr1 (CPUPPCState *env);
764 774
void do_store_sdr1 (CPUPPCState *env, target_ulong value);
765
target_ulong do_load_asr (CPUPPCState *env);
766
void do_store_asr (CPUPPCState *env, target_ulong value);
775
#if defined(TARGET_PPC64)
776
target_ulong ppc_load_asr (CPUPPCState *env);
777
void ppc_store_asr (CPUPPCState *env, target_ulong value);
778
#endif
767 779
target_ulong do_load_sr (CPUPPCState *env, int srnum);
768 780
void do_store_sr (CPUPPCState *env, int srnum, target_ulong value);
769 781
#endif
......
771 783
void ppc_store_xer (CPUPPCState *env, uint32_t value);
772 784
target_ulong do_load_msr (CPUPPCState *env);
773 785
void do_store_msr (CPUPPCState *env, target_ulong value);
786
void ppc_store_msr32 (CPUPPCState *env, uint32_t value);
774 787

  
775 788
void do_compute_hflags (CPUPPCState *env);
776 789

  
......
787 800
void cpu_ppc_store_tbl (CPUPPCState *env, uint32_t value);
788 801
uint32_t cpu_ppc_load_decr (CPUPPCState *env);
789 802
void cpu_ppc_store_decr (CPUPPCState *env, uint32_t value);
803
uint32_t cpu_ppc601_load_rtcl (CPUPPCState *env);
804
uint32_t cpu_ppc601_load_rtcu (CPUPPCState *env);
805
#if !defined(CONFIG_USER_ONLY)
806
void cpu_ppc601_store_rtcl (CPUPPCState *env, uint32_t value);
807
void cpu_ppc601_store_rtcu (CPUPPCState *env, uint32_t value);
808
target_ulong load_40x_pit (CPUPPCState *env);
809
void store_40x_pit (CPUPPCState *env, target_ulong val);
810
void store_booke_tcr (CPUPPCState *env, target_ulong val);
811
void store_booke_tsr (CPUPPCState *env, target_ulong val);
812
#endif
790 813
#endif
791 814

  
792 815
#define TARGET_PAGE_BITS 12

Also available in: Unified diff