From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40248) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxxfT-0007zF-P1 for qemu-devel@nongnu.org; Fri, 20 Jun 2014 08:11:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxxfO-0001yT-TF for qemu-devel@nongnu.org; Fri, 20 Jun 2014 08:11:43 -0400 Received: from mail-we0-x22b.google.com ([2a00:1450:400c:c03::22b]:36300) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxxfO-0001yJ-Lx for qemu-devel@nongnu.org; Fri, 20 Jun 2014 08:11:38 -0400 Received: by mail-we0-f171.google.com with SMTP id q58so3660055wes.2 for ; Fri, 20 Jun 2014 05:11:37 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Fri, 20 Jun 2014 14:11:14 +0200 Message-Id: <1403266283-1517-6-git-send-email-pbonzini@redhat.com> In-Reply-To: <1403266283-1517-1-git-send-email-pbonzini@redhat.com> References: <1403266283-1517-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 05/14] target-mips: get_physical_address: Add defines for segment bases List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: James Hogan From: James Hogan Add preprocessor definitions for 32bit segment bases for use in get_physical_address(). These will also be taken advantage of in the next patch which adds KVM awareness. Signed-off-by: James Hogan Reviewed-by: Aurelien Jarno Signed-off-by: Paolo Bonzini --- target-mips/helper.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-) diff --git a/target-mips/helper.c b/target-mips/helper.c index 064622c..caacd76 100644 --- a/target-mips/helper.c +++ b/target-mips/helper.c @@ -118,7 +118,13 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical, qemu_log("user mode %d h %08x\n", user_mode, env->hflags); #endif - if (address <= (int32_t)0x7FFFFFFFUL) { +#define USEG_LIMIT 0x7FFFFFFFUL +#define KSEG0_BASE 0x80000000UL +#define KSEG1_BASE 0xA0000000UL +#define KSEG2_BASE 0xC0000000UL +#define KSEG3_BASE 0xE0000000UL + + if (address <= USEG_LIMIT) { /* useg */ if (env->CP0_Status & (1 << CP0St_ERL)) { *physical = address & 0xFFFFFFFF; @@ -160,23 +166,23 @@ static int get_physical_address (CPUMIPSState *env, hwaddr *physical, ret = TLBRET_BADADDR; } #endif - } else if (address < (int32_t)0xA0000000UL) { + } else if (address < (int32_t)KSEG1_BASE) { /* kseg0 */ if (kernel_mode) { - *physical = address - (int32_t)0x80000000UL; + *physical = address - (int32_t)KSEG0_BASE; *prot = PAGE_READ | PAGE_WRITE; } else { ret = TLBRET_BADADDR; } - } else if (address < (int32_t)0xC0000000UL) { + } else if (address < (int32_t)KSEG2_BASE) { /* kseg1 */ if (kernel_mode) { - *physical = address - (int32_t)0xA0000000UL; + *physical = address - (int32_t)KSEG1_BASE; *prot = PAGE_READ | PAGE_WRITE; } else { ret = TLBRET_BADADDR; } - } else if (address < (int32_t)0xE0000000UL) { + } else if (address < (int32_t)KSEG3_BASE) { /* sseg (kseg2) */ if (supervisor_mode || kernel_mode) { ret = env->tlb->map_address(env, physical, prot, address, rw, access_type); -- 1.7.1