[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 21/21] PPC: E500: Populate L1CFG0 SPR
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 21/21] PPC: E500: Populate L1CFG0 SPR |
Date: |
Thu, 2 Feb 2012 02:49:44 +0100 |
When running Linux on e500 with powersave-nap enabled, Linux tries to
read out the L1CFG0 register and calculates some things from it. Passing
0 there ends up in a division by 0, resulting in -1, resulting in badness.
So let's populate the L1CFG0 register with reasonable defaults. That way
guests aren't completely confused.
Reported-by: Shrijeet Mukherjee <address@hidden>
Signed-off-by: Alexander Graf <address@hidden>
---
target-ppc/translate_init.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index 7848cd7..6253076 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -4434,6 +4434,8 @@ static void init_proc_e500 (CPUPPCState *env, int version)
{
uint32_t tlbncfg[2];
uint64_t ivor_mask = 0x0000000F0000FFFFULL;
+ uint32_t l1cfg0 = 0x3800 /* 8 ways */
+ | 0x0020; /* 32 kb */
#if !defined(CONFIG_USER_ONLY)
int i;
#endif
@@ -4485,6 +4487,7 @@ static void init_proc_e500 (CPUPPCState *env, int version)
tlbncfg[1] = gen_tlbncfg(64, 1, 12, TLBnCFG_AVAIL | TLBnCFG_IPROT, 64);
env->dcache_line_size = 64;
env->icache_line_size = 64;
+ l1cfg0 |= 0x1000000; /* 64 byte cache block size */
break;
default:
cpu_abort(env, "Unknown CPU: " TARGET_FMT_lx "\n", env->spr[SPR_PVR]);
@@ -4535,7 +4538,7 @@ static void init_proc_e500 (CPUPPCState *env, int version)
spr_register(env, SPR_Exxx_L1CFG0, "L1CFG0",
SPR_NOACCESS, SPR_NOACCESS,
&spr_read_generic, &spr_write_generic,
- 0x00000000);
+ l1cfg0);
/* XXX : not implemented */
spr_register(env, SPR_Exxx_L1CSR0, "L1CSR0",
SPR_NOACCESS, SPR_NOACCESS,
--
1.6.0.2
- [Qemu-ppc] [PULL 00/21] ppc patch queue 2012-02-02, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 12/21] PPC: booke206: move avail check to tlbwe, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 19/21] PPC: E500: Implement msgsnd, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 03/21] PPC: Add IVOR 38-42, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 16/21] PPC: Add CPU feature for processor control, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 18/21] PPC: E500: Implement msgclr, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 21/21] PPC: E500: Populate L1CFG0 SPR,
Alexander Graf <=
- [Qemu-ppc] [PATCH 11/21] PPC: booke206: Check for TLB overrun, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 07/21] PPC: booke206: allow NULL raddr in ppcmas_tlb_check, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 10/21] PPC: booke206: Implement tlbilx, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 20/21] PPC: e500mc: Enable processor control, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 17/21] PPC: Enable doorbell excp handlers, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 09/21] PPC: booke206: Check for min/max TLB entry size, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 02/21] PPC: KVM: Update HIOR code to new interface, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 08/21] PPC: booke: add tlbnps handling, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 04/21] PPC: e500mc: add missing IVORs to bitmap, Alexander Graf, 2012/02/01
- [Qemu-ppc] [PATCH 05/21] PPC: e500: msync is 440 only, e500 has real sync, Alexander Graf, 2012/02/01