X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BeagleBoardPkg%2FSec%2FArm%2FModuleEntryPoint.asm;h=63174d4b84370287d304bd37415e54b59478cc8b;hp=d31a29b7c9b8f0f1449b9dbd40a3a38aaf1703b7;hb=3402aac7d985bf8a9f9d3c639f3fe93609380513;hpb=62d441fb17d59958bf00c4a1f3b52bf6a0b40b24 diff --git a/BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm b/BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm index d31a29b7c9..63174d4b84 100644 --- a/BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm +++ b/BeagleBoardPkg/Sec/Arm/ModuleEntryPoint.asm @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
// @@ -16,21 +16,21 @@ #include #include INCLUDE AsmMacroIoLib.inc - + IMPORT CEntryPoint EXPORT _ModuleEntryPoint - + PRESERVE8 AREA ModuleEntryPoint, CODE, READONLY - + _ModuleEntryPoint - + //Disable L2 cache mrc p15, 0, r0, c1, c0, 1 // read Auxiliary Control Register bic r0, r0, #0x00000002 // disable L2 cache mcr p15, 0, r0, c1, c0, 1 // store Auxiliary Control Register - + //Enable Strict alignment checking & Instruction cache mrc p15, 0, r0, c1, c0, 0 bic r0, r0, #0x00002300 /* clear bits 13, 9:8 (--V- --RS) */ @@ -38,14 +38,14 @@ _ModuleEntryPoint orr r0, r0, #0x00000002 /* set bit 1 (A) Align */ orr r0, r0, #0x00001000 /* set bit 12 (I) enable I-Cache */ mcr p15, 0, r0, c1, c0, 0 - + // Enable NEON register in case folks want to use them for optimizations (CopyMem) mrc p15, 0, r0, c1, c0, 2 orr r0, r0, #0x00f00000 // Enable VPF access (V* instructions) mcr p15, 0, r0, c1, c0, 2 mov r0, #0x40000000 // Set EN bit in FPEXC msr FPEXC,r0 - + // Set CPU vectors to start of DRAM LoadConstantToReg (FixedPcdGet32(PcdCpuVectorBaseAddress) ,r0) // Get vector base mcr p15, 0, r0, c12, c0, 0 @@ -59,16 +59,16 @@ FillVectors adds r2, r2, #4 cmp r2, #32 bne FillVectors - + /* before we call C code, lets setup the stack pointer in internal RAM */ stack_pointer_setup // - // Set stack based on PCD values. Need to do it this way to make C code work - // when it runs from FLASH. - // - LoadConstantToReg (FixedPcdGet32(PcdPrePiStackBase) ,r2) // stack base arg2 - LoadConstantToReg (FixedPcdGet32(PcdPrePiStackSize) ,r3) // stack size arg3 + // Set stack based on PCD values. Need to do it this way to make C code work + // when it runs from FLASH. + // + LoadConstantToReg (FixedPcdGet32(PcdPrePiStackBase) ,r2) // stack base arg2 + LoadConstantToReg (FixedPcdGet32(PcdPrePiStackSize) ,r3) // stack size arg3 add r4, r2, r3 //Enter SVC mode and set up SVC stack pointer @@ -77,13 +77,13 @@ stack_pointer_setup mov r13,r4 // Call C entry point - LoadConstantToReg (FixedPcdGet32(PcdMemorySize) ,r1) // memory size arg1 + LoadConstantToReg (FixedPcdGet32(PcdMemorySize) ,r1) // memory size arg1 LoadConstantToReg (FixedPcdGet32(PcdMemoryBase) ,r0) // memory start arg0 - blx CEntryPoint // Assume C code is thumb + blx CEntryPoint // Assume C code is thumb ShouldNeverGetHere /* _CEntryPoint should never return */ b ShouldNeverGetHere - + END