From 063ad84e20649d024ea9322b328d4ed2079903be Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Fri, 25 Jan 2013 12:05:17 +0000 Subject: ArmPlatformPkg/PrePi: Removed magic values Introduced CPSR (Coprocessor Status Register) definitions Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14097 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPkg/Include/Chipset/ArmV7.h | 17 ++++++++++++++++- ArmPlatformPkg/PrePi/ModuleEntryPoint.S | 7 ++++--- ArmPlatformPkg/PrePi/ModuleEntryPoint.asm | 7 ++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/ArmPkg/Include/Chipset/ArmV7.h b/ArmPkg/Include/Chipset/ArmV7.h index 3d1b4eea4b..8bff941b9e 100644 --- a/ArmPkg/Include/Chipset/ArmV7.h +++ b/ArmPkg/Include/Chipset/ArmV7.h @@ -1,7 +1,7 @@ /** @file Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
- Copyright (c) 2011, ARM Ltd. All rights reserved.
+ Copyright (c) 2011-2013, ARM Ltd. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License @@ -26,6 +26,21 @@ #define DOMAIN_ACCESS_CONTROL_RESERVED(a) (2UL << (2 * (a))) #define DOMAIN_ACCESS_CONTROL_MANAGER(a) (3UL << (2 * (a))) +// CPSR - Coprocessor Status Register definitions +#define CPSR_MODE_USER 0x10 +#define CPSR_MODE_FIQ 0x11 +#define CPSR_MODE_IRQ 0x12 +#define CPSR_MODE_SVC 0x13 +#define CPSR_MODE_ABORT 0x17 +#define CPSR_MODE_HYP 0x1A +#define CPSR_MODE_UNDEFINED 0x1B +#define CPSR_MODE_SYSTEM 0x1F +#define CPSR_MODE_MASK 0x1F +#define CPSR_ASYNC_ABORT (1 << 8) +#define CPSR_IRQ (1 << 7) +#define CPSR_FIQ (1 << 6) + + // CPACR - Coprocessor Access Control Register definitions #define CPACR_CP_DENIED(cp) 0x00 #define CPACR_CP_PRIV(cp) ((0x1 << ((cp) << 1)) & 0x0FFFFFFF) diff --git a/ArmPlatformPkg/PrePi/ModuleEntryPoint.S b/ArmPlatformPkg/PrePi/ModuleEntryPoint.S index 9215198d93..c0c20a9206 100755 --- a/ArmPlatformPkg/PrePi/ModuleEntryPoint.S +++ b/ArmPlatformPkg/PrePi/ModuleEntryPoint.S @@ -1,5 +1,5 @@ // -// Copyright (c) 2011-2012, ARM Limited. All rights reserved. +// Copyright (c) 2011-2013, ARM Limited. All rights reserved. // // This program and the accompanying materials // are licensed and made available under the terms and conditions of the BSD License @@ -16,6 +16,8 @@ #include #include +#include + .text .align 3 @@ -35,8 +37,7 @@ ASM_PFX(_ModuleEntryPoint): _SetSVCMode: // Enter SVC mode, Disable FIQ and IRQ - //TODO: remove hardcoded values - mov r1, #0x13|0x80|0x40 + mov r1, #(CPSR_MODE_SVC | CPSR_IRQ | CPSR_FIQ) msr CPSR_c, r1 // Check if we can install the stack at the top of the System Memory or if we need diff --git a/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm b/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm index 0dea1c3271..5efdb532af 100644 --- a/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm +++ b/ArmPlatformPkg/PrePi/ModuleEntryPoint.asm @@ -1,5 +1,5 @@ // -// Copyright (c) 2011-2012, ARM Limited. All rights reserved. +// Copyright (c) 2011-2013, ARM Limited. All rights reserved. // // This program and the accompanying materials // are licensed and made available under the terms and conditions of the BSD License @@ -16,6 +16,8 @@ #include #include +#include + INCLUDE AsmMacroIoLib.inc IMPORT CEntryPoint @@ -37,8 +39,7 @@ _ModuleEntryPoint _SetSVCMode // Enter SVC mode, Disable FIQ and IRQ - //TODO: remove hardcoded values - mov r1, #0x13 :OR: 0x80 :OR: 0x40 + mov r1, #(CPSR_MODE_SVC :OR: CPSR_IRQ :OR: CPSR_FIQ) msr CPSR_c, r1 // Check if we can install the stack at the top of the System Memory or if we need -- cgit v1.2.3