cpu.c (26c470a7bb4233454137de1062341ad48947f252) | cpu.c (5110e6836b7fa698b0c383fbd5dffbee035935d3) |
---|---|
1/* 2 * QEMU ARM CPU 3 * 4 * Copyright (c) 2012 SUSE LINUX Products GmbH 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 --- 786 unchanged lines hidden (view full) --- 795 cpu_exec_realizefn(cs, &local_err); 796 if (local_err != NULL) { 797 error_propagate(errp, local_err); 798 return; 799 } 800 801 /* Some features automatically imply others: */ 802 if (arm_feature(env, ARM_FEATURE_V8)) { | 1/* 2 * QEMU ARM CPU 3 * 4 * Copyright (c) 2012 SUSE LINUX Products GmbH 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 --- 786 unchanged lines hidden (view full) --- 795 cpu_exec_realizefn(cs, &local_err); 796 if (local_err != NULL) { 797 error_propagate(errp, local_err); 798 return; 799 } 800 801 /* Some features automatically imply others: */ 802 if (arm_feature(env, ARM_FEATURE_V8)) { |
803 set_feature(env, ARM_FEATURE_V7); | 803 set_feature(env, ARM_FEATURE_V7VE); 804 } 805 if (arm_feature(env, ARM_FEATURE_V7VE)) { 806 /* v7 Virtualization Extensions. In real hardware this implies 807 * EL2 and also the presence of the Security Extensions. 808 * For QEMU, for backwards-compatibility we implement some 809 * CPUs or CPU configs which have no actual EL2 or EL3 but do 810 * include the various other features that V7VE implies. 811 * Presence of EL2 itself is ARM_FEATURE_EL2, and of the 812 * Security Extensions is ARM_FEATURE_EL3. 813 */ |
804 set_feature(env, ARM_FEATURE_ARM_DIV); 805 set_feature(env, ARM_FEATURE_LPAE); | 814 set_feature(env, ARM_FEATURE_ARM_DIV); 815 set_feature(env, ARM_FEATURE_LPAE); |
816 set_feature(env, ARM_FEATURE_V7); |
|
806 } 807 if (arm_feature(env, ARM_FEATURE_V7)) { 808 set_feature(env, ARM_FEATURE_VAPA); 809 set_feature(env, ARM_FEATURE_THUMB2); 810 set_feature(env, ARM_FEATURE_MPIDR); 811 if (!arm_feature(env, ARM_FEATURE_M)) { 812 set_feature(env, ARM_FEATURE_V6K); 813 } else { --- 705 unchanged lines hidden (view full) --- 1519 REGINFO_SENTINEL 1520}; 1521 1522static void cortex_a7_initfn(Object *obj) 1523{ 1524 ARMCPU *cpu = ARM_CPU(obj); 1525 1526 cpu->dtb_compatible = "arm,cortex-a7"; | 817 } 818 if (arm_feature(env, ARM_FEATURE_V7)) { 819 set_feature(env, ARM_FEATURE_VAPA); 820 set_feature(env, ARM_FEATURE_THUMB2); 821 set_feature(env, ARM_FEATURE_MPIDR); 822 if (!arm_feature(env, ARM_FEATURE_M)) { 823 set_feature(env, ARM_FEATURE_V6K); 824 } else { --- 705 unchanged lines hidden (view full) --- 1530 REGINFO_SENTINEL 1531}; 1532 1533static void cortex_a7_initfn(Object *obj) 1534{ 1535 ARMCPU *cpu = ARM_CPU(obj); 1536 1537 cpu->dtb_compatible = "arm,cortex-a7"; |
1527 set_feature(&cpu->env, ARM_FEATURE_V7); | 1538 set_feature(&cpu->env, ARM_FEATURE_V7VE); |
1528 set_feature(&cpu->env, ARM_FEATURE_VFP4); 1529 set_feature(&cpu->env, ARM_FEATURE_NEON); 1530 set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); | 1539 set_feature(&cpu->env, ARM_FEATURE_VFP4); 1540 set_feature(&cpu->env, ARM_FEATURE_NEON); 1541 set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); |
1531 set_feature(&cpu->env, ARM_FEATURE_ARM_DIV); | |
1532 set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); 1533 set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); 1534 set_feature(&cpu->env, ARM_FEATURE_CBAR_RO); | 1542 set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); 1543 set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); 1544 set_feature(&cpu->env, ARM_FEATURE_CBAR_RO); |
1535 set_feature(&cpu->env, ARM_FEATURE_LPAE); | |
1536 set_feature(&cpu->env, ARM_FEATURE_EL3); 1537 cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A7; 1538 cpu->midr = 0x410fc075; 1539 cpu->reset_fpsid = 0x41023075; 1540 cpu->mvfr0 = 0x10110222; 1541 cpu->mvfr1 = 0x11111111; 1542 cpu->ctr = 0x84448003; 1543 cpu->reset_sctlr = 0x00c50078; --- 20 unchanged lines hidden (view full) --- 1564 define_arm_cp_regs(cpu, cortexa15_cp_reginfo); /* Same as A15 */ 1565} 1566 1567static void cortex_a15_initfn(Object *obj) 1568{ 1569 ARMCPU *cpu = ARM_CPU(obj); 1570 1571 cpu->dtb_compatible = "arm,cortex-a15"; | 1545 set_feature(&cpu->env, ARM_FEATURE_EL3); 1546 cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A7; 1547 cpu->midr = 0x410fc075; 1548 cpu->reset_fpsid = 0x41023075; 1549 cpu->mvfr0 = 0x10110222; 1550 cpu->mvfr1 = 0x11111111; 1551 cpu->ctr = 0x84448003; 1552 cpu->reset_sctlr = 0x00c50078; --- 20 unchanged lines hidden (view full) --- 1573 define_arm_cp_regs(cpu, cortexa15_cp_reginfo); /* Same as A15 */ 1574} 1575 1576static void cortex_a15_initfn(Object *obj) 1577{ 1578 ARMCPU *cpu = ARM_CPU(obj); 1579 1580 cpu->dtb_compatible = "arm,cortex-a15"; |
1572 set_feature(&cpu->env, ARM_FEATURE_V7); | 1581 set_feature(&cpu->env, ARM_FEATURE_V7VE); |
1573 set_feature(&cpu->env, ARM_FEATURE_VFP4); 1574 set_feature(&cpu->env, ARM_FEATURE_NEON); 1575 set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); | 1582 set_feature(&cpu->env, ARM_FEATURE_VFP4); 1583 set_feature(&cpu->env, ARM_FEATURE_NEON); 1584 set_feature(&cpu->env, ARM_FEATURE_THUMB2EE); |
1576 set_feature(&cpu->env, ARM_FEATURE_ARM_DIV); | |
1577 set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); 1578 set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); 1579 set_feature(&cpu->env, ARM_FEATURE_CBAR_RO); | 1585 set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); 1586 set_feature(&cpu->env, ARM_FEATURE_DUMMY_C15_REGS); 1587 set_feature(&cpu->env, ARM_FEATURE_CBAR_RO); |
1580 set_feature(&cpu->env, ARM_FEATURE_LPAE); | |
1581 set_feature(&cpu->env, ARM_FEATURE_EL3); 1582 cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A15; 1583 cpu->midr = 0x412fc0f1; 1584 cpu->reset_fpsid = 0x410430f0; 1585 cpu->mvfr0 = 0x10110222; 1586 cpu->mvfr1 = 0x11111111; 1587 cpu->ctr = 0x8444c004; 1588 cpu->reset_sctlr = 0x00c50078; --- 445 unchanged lines hidden --- | 1588 set_feature(&cpu->env, ARM_FEATURE_EL3); 1589 cpu->kvm_target = QEMU_KVM_ARM_TARGET_CORTEX_A15; 1590 cpu->midr = 0x412fc0f1; 1591 cpu->reset_fpsid = 0x410430f0; 1592 cpu->mvfr0 = 0x10110222; 1593 cpu->mvfr1 = 0x11111111; 1594 cpu->ctr = 0x8444c004; 1595 cpu->reset_sctlr = 0x00c50078; --- 445 unchanged lines hidden --- |