Revision 7162bdea target-ppc/translate_init.c

b/target-ppc/translate_init.c
6479 6479
                 POWERPC_FLAG_BUS_CLK;
6480 6480
}
6481 6481

  
6482
static void init_proc_e600 (CPUPPCState *env)
6483
{
6484
    gen_spr_ne_601(env);
6485
    gen_spr_7xx(env);
6486
    /* Time base */
6487
    gen_tbl(env);
6488
    /* 74xx specific SPR */
6489
    gen_spr_74xx(env);
6490
    /* XXX : not implemented */
6491
    spr_register(env, SPR_UBAMR, "UBAMR",
6492
                 &spr_read_ureg, SPR_NOACCESS,
6493
                 &spr_read_ureg, SPR_NOACCESS,
6494
                 0x00000000);
6495
    /* XXX : not implemented */
6496
    spr_register(env, SPR_LDSTCR, "LDSTCR",
6497
                 SPR_NOACCESS, SPR_NOACCESS,
6498
                 &spr_read_generic, &spr_write_generic,
6499
                 0x00000000);
6500
    /* XXX : not implemented */
6501
    spr_register(env, SPR_ICTRL, "ICTRL",
6502
                 SPR_NOACCESS, SPR_NOACCESS,
6503
                 &spr_read_generic, &spr_write_generic,
6504
                 0x00000000);
6505
    /* XXX : not implemented */
6506
    spr_register(env, SPR_MSSSR0, "MSSSR0",
6507
                 SPR_NOACCESS, SPR_NOACCESS,
6508
                 &spr_read_generic, &spr_write_generic,
6509
                 0x00000000);
6510
    /* XXX : not implemented */
6511
    spr_register(env, SPR_PMC5, "PMC5",
6512
                 SPR_NOACCESS, SPR_NOACCESS,
6513
                 &spr_read_generic, &spr_write_generic,
6514
                 0x00000000);
6515
    /* XXX : not implemented */
6516
    spr_register(env, SPR_UPMC5, "UPMC5",
6517
                 &spr_read_ureg, SPR_NOACCESS,
6518
                 &spr_read_ureg, SPR_NOACCESS,
6519
                 0x00000000);
6520
    /* XXX : not implemented */
6521
    spr_register(env, SPR_PMC6, "PMC6",
6522
                 SPR_NOACCESS, SPR_NOACCESS,
6523
                 &spr_read_generic, &spr_write_generic,
6524
                 0x00000000);
6525
    /* XXX : not implemented */
6526
    spr_register(env, SPR_UPMC6, "UPMC6",
6527
                 &spr_read_ureg, SPR_NOACCESS,
6528
                 &spr_read_ureg, SPR_NOACCESS,
6529
                 0x00000000);
6530
    /* SPRGs */
6531
    spr_register(env, SPR_SPRG4, "SPRG4",
6532
                 SPR_NOACCESS, SPR_NOACCESS,
6533
                 &spr_read_generic, &spr_write_generic,
6534
                 0x00000000);
6535
    spr_register(env, SPR_USPRG4, "USPRG4",
6536
                 &spr_read_ureg, SPR_NOACCESS,
6537
                 &spr_read_ureg, SPR_NOACCESS,
6538
                 0x00000000);
6539
    spr_register(env, SPR_SPRG5, "SPRG5",
6540
                 SPR_NOACCESS, SPR_NOACCESS,
6541
                 &spr_read_generic, &spr_write_generic,
6542
                 0x00000000);
6543
    spr_register(env, SPR_USPRG5, "USPRG5",
6544
                 &spr_read_ureg, SPR_NOACCESS,
6545
                 &spr_read_ureg, SPR_NOACCESS,
6546
                 0x00000000);
6547
    spr_register(env, SPR_SPRG6, "SPRG6",
6548
                 SPR_NOACCESS, SPR_NOACCESS,
6549
                 &spr_read_generic, &spr_write_generic,
6550
                 0x00000000);
6551
    spr_register(env, SPR_USPRG6, "USPRG6",
6552
                 &spr_read_ureg, SPR_NOACCESS,
6553
                 &spr_read_ureg, SPR_NOACCESS,
6554
                 0x00000000);
6555
    spr_register(env, SPR_SPRG7, "SPRG7",
6556
                 SPR_NOACCESS, SPR_NOACCESS,
6557
                 &spr_read_generic, &spr_write_generic,
6558
                 0x00000000);
6559
    spr_register(env, SPR_USPRG7, "USPRG7",
6560
                 &spr_read_ureg, SPR_NOACCESS,
6561
                 &spr_read_ureg, SPR_NOACCESS,
6562
                 0x00000000);
6563
    /* Memory management */
6564
    gen_low_BATs(env);
6565
    gen_high_BATs(env);
6566
    gen_74xx_soft_tlb(env, 128, 2);
6567
    init_excp_7450(env);
6568
    env->dcache_line_size = 32;
6569
    env->icache_line_size = 32;
6570
    /* Allocate hardware IRQ controller */
6571
    ppc6xx_irq_init(env);
6572
}
6573

  
6574
POWERPC_FAMILY(e600)(ObjectClass *oc, void *data)
6575
{
6576
    DeviceClass *dc = DEVICE_CLASS(oc);
6577
    PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(oc);
6578

  
6579
    dc->desc = "PowerPC e600";
6580
    pcc->init_proc = init_proc_e600;
6581
    pcc->check_pow = check_pow_hid0_74xx;
6582
    pcc->insns_flags = PPC_INSNS_BASE | PPC_STRING | PPC_MFTB |
6583
                       PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES |
6584
                       PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE |
6585
                       PPC_FLOAT_STFIWX |
6586
                       PPC_CACHE | PPC_CACHE_ICBI |
6587
                       PPC_CACHE_DCBA | PPC_CACHE_DCBZ |
6588
                       PPC_MEM_SYNC | PPC_MEM_EIEIO |
6589
                       PPC_MEM_TLBIE | PPC_MEM_TLBSYNC |
6590
                       PPC_MEM_TLBIA | PPC_74xx_TLB |
6591
                       PPC_SEGMENT | PPC_EXTERN |
6592
                       PPC_ALTIVEC;
6593
    pcc->insns_flags2 = PPC_NONE;
6594
    pcc->msr_mask = 0x000000000205FF77ULL;
6595
    pcc->mmu_model = POWERPC_MMU_32B;
6596
#if defined(CONFIG_SOFTMMU)
6597
    pcc->handle_mmu_fault = ppc_hash32_handle_mmu_fault;
6598
#endif
6599
    pcc->excp_model = POWERPC_EXCP_74xx;
6600
    pcc->bus_model = PPC_FLAGS_INPUT_6xx;
6601
    pcc->bfd_mach = bfd_mach_ppc_7400;
6602
    pcc->flags = POWERPC_FLAG_VRE | POWERPC_FLAG_SE |
6603
                 POWERPC_FLAG_BE | POWERPC_FLAG_PMM |
6604
                 POWERPC_FLAG_BUS_CLK;
6605
}
6606

  
6482 6607
#if defined (TARGET_PPC64)
6483 6608
#if defined(CONFIG_USER_ONLY)
6484 6609
#define POWERPC970_HID5_INIT 0x00000080

Also available in: Unified diff