mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
ArmPkg: update RVCT assembly functions to use new RVCT_ASM_EXPORT macro
This has the effect of splitting assembly functions into their own sections so the linker can remove unused ones to save space. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eugene Cohen <eugene@hp.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@gmail.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19109 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e04671e81a
commit
efda177513
@ -15,16 +15,15 @@
|
|||||||
#include <Library/ArmCpuLib.h>
|
#include <Library/ArmCpuLib.h>
|
||||||
#include <Chipset/ArmCortexA9.h>
|
#include <Chipset/ArmCortexA9.h>
|
||||||
|
|
||||||
|
INCLUDE AsmMacroExport.inc
|
||||||
INCLUDE AsmMacroIoLib.inc
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
EXPORT ArmGetScuBaseAddress
|
|
||||||
|
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
AREA ArmCortexA9Helper, CODE, READONLY
|
|
||||||
|
|
||||||
// IN None
|
// IN None
|
||||||
// OUT r0 = SCU Base Address
|
// OUT r0 = SCU Base Address
|
||||||
ArmGetScuBaseAddress
|
RVCT_ASM_EXPORT ArmGetScuBaseAddress
|
||||||
// Read Configuration Base Address Register. ArmCBar cannot be called to get
|
// Read Configuration Base Address Register. ArmCBar cannot be called to get
|
||||||
// the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
// the Configuration BAR as a stack is not necessary setup. The SCU is at the
|
||||||
// offset 0x0000 from the Private Memory Region.
|
// offset 0x0000 from the Private Memory Region.
|
||||||
|
@ -13,23 +13,15 @@
|
|||||||
|
|
||||||
// For the moment we assume this will run in SVC mode on ARMv7
|
// For the moment we assume this will run in SVC mode on ARMv7
|
||||||
|
|
||||||
EXPORT ArmGicV3GetControlSystemRegisterEnable
|
|
||||||
EXPORT ArmGicV3SetControlSystemRegisterEnable
|
|
||||||
EXPORT ArmGicV3EnableInterruptInterface
|
|
||||||
EXPORT ArmGicV3DisableInterruptInterface
|
|
||||||
EXPORT ArmGicV3EndOfInterrupt
|
|
||||||
EXPORT ArmGicV3AcknowledgeInterrupt
|
|
||||||
EXPORT ArmGicV3SetPriorityMask
|
|
||||||
EXPORT ArmGicV3SetBinaryPointer
|
|
||||||
|
|
||||||
AREA ArmGicV3, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
//UINT32
|
//UINT32
|
||||||
//EFIAPI
|
//EFIAPI
|
||||||
//ArmGicGetControlSystemRegisterEnable (
|
//ArmGicGetControlSystemRegisterEnable (
|
||||||
// VOID
|
// VOID
|
||||||
// );
|
// );
|
||||||
ArmGicV3GetControlSystemRegisterEnable
|
RVCT_ASM_EXPORT ArmGicV3GetControlSystemRegisterEnable
|
||||||
mrc p15, 0, r0, c12, c12, 5 // ICC_SRE
|
mrc p15, 0, r0, c12, c12, 5 // ICC_SRE
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
@ -38,7 +30,7 @@ ArmGicV3GetControlSystemRegisterEnable
|
|||||||
//ArmGicSetControlSystemRegisterEnable (
|
//ArmGicSetControlSystemRegisterEnable (
|
||||||
// IN UINT32 ControlSystemRegisterEnable
|
// IN UINT32 ControlSystemRegisterEnable
|
||||||
// );
|
// );
|
||||||
ArmGicV3SetControlSystemRegisterEnable
|
RVCT_ASM_EXPORT ArmGicV3SetControlSystemRegisterEnable
|
||||||
mcr p15, 0, r0, c12, c12, 5 // ICC_SRE
|
mcr p15, 0, r0, c12, c12, 5 // ICC_SRE
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
@ -47,7 +39,7 @@ ArmGicV3SetControlSystemRegisterEnable
|
|||||||
//ArmGicV3EnableInterruptInterface (
|
//ArmGicV3EnableInterruptInterface (
|
||||||
// VOID
|
// VOID
|
||||||
// );
|
// );
|
||||||
ArmGicV3EnableInterruptInterface
|
RVCT_ASM_EXPORT ArmGicV3EnableInterruptInterface
|
||||||
mov r0, #1
|
mov r0, #1
|
||||||
mcr p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
|
mcr p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
|
||||||
bx lr
|
bx lr
|
||||||
@ -56,7 +48,7 @@ ArmGicV3EnableInterruptInterface
|
|||||||
//ArmGicV3DisableInterruptInterface (
|
//ArmGicV3DisableInterruptInterface (
|
||||||
// VOID
|
// VOID
|
||||||
// );
|
// );
|
||||||
ArmGicV3DisableInterruptInterface
|
RVCT_ASM_EXPORT ArmGicV3DisableInterruptInterface
|
||||||
mov r0, #0
|
mov r0, #0
|
||||||
mcr p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
|
mcr p15, 0, r0, c12, c12, 7 // ICC_IGRPEN1
|
||||||
bx lr
|
bx lr
|
||||||
@ -65,7 +57,7 @@ ArmGicV3DisableInterruptInterface
|
|||||||
//ArmGicV3EndOfInterrupt (
|
//ArmGicV3EndOfInterrupt (
|
||||||
// IN UINTN InterruptId
|
// IN UINTN InterruptId
|
||||||
// );
|
// );
|
||||||
ArmGicV3EndOfInterrupt
|
RVCT_ASM_EXPORT ArmGicV3EndOfInterrupt
|
||||||
mcr p15, 0, r0, c12, c12, 1 //ICC_EOIR1
|
mcr p15, 0, r0, c12, c12, 1 //ICC_EOIR1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
@ -73,7 +65,7 @@ ArmGicV3EndOfInterrupt
|
|||||||
//ArmGicV3AcknowledgeInterrupt (
|
//ArmGicV3AcknowledgeInterrupt (
|
||||||
// VOID
|
// VOID
|
||||||
// );
|
// );
|
||||||
ArmGicV3AcknowledgeInterrupt
|
RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
|
||||||
mrc p15, 0, r0, c12, c8, 0 //ICC_IAR1
|
mrc p15, 0, r0, c12, c8, 0 //ICC_IAR1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
@ -81,7 +73,7 @@ ArmGicV3AcknowledgeInterrupt
|
|||||||
//ArmGicV3SetPriorityMask (
|
//ArmGicV3SetPriorityMask (
|
||||||
// IN UINTN Priority
|
// IN UINTN Priority
|
||||||
// );
|
// );
|
||||||
ArmGicV3SetPriorityMask
|
RVCT_ASM_EXPORT ArmGicV3SetPriorityMask
|
||||||
mcr p15, 0, r0, c4, c6, 0 //ICC_PMR
|
mcr p15, 0, r0, c4, c6, 0 //ICC_PMR
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
@ -89,7 +81,7 @@ ArmGicV3SetPriorityMask
|
|||||||
//ArmGicV3SetBinaryPointer (
|
//ArmGicV3SetBinaryPointer (
|
||||||
// IN UINTN BinaryPoint
|
// IN UINTN BinaryPoint
|
||||||
// );
|
// );
|
||||||
ArmGicV3SetBinaryPointer
|
RVCT_ASM_EXPORT ArmGicV3SetBinaryPointer
|
||||||
mcr p15, 0, r0, c12, c12, 3 //ICC_BPR1
|
mcr p15, 0, r0, c12, c12, 3 //ICC_BPR1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
@ -12,11 +12,10 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
EXPORT ArmCallHvc
|
|
||||||
|
|
||||||
AREA ArmHvc, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
ArmCallHvc
|
RVCT_ASM_EXPORT ArmCallHvc
|
||||||
push {r4-r8}
|
push {r4-r8}
|
||||||
// r0 will be popped just after the HVC call
|
// r0 will be popped just after the HVC call
|
||||||
push {r0}
|
push {r0}
|
||||||
|
@ -14,27 +14,13 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT ArmIsMpCore
|
|
||||||
EXPORT ArmHasMpExtensions
|
|
||||||
EXPORT ArmEnableAsynchronousAbort
|
|
||||||
EXPORT ArmDisableAsynchronousAbort
|
|
||||||
EXPORT ArmEnableIrq
|
|
||||||
EXPORT ArmDisableIrq
|
|
||||||
EXPORT ArmEnableFiq
|
|
||||||
EXPORT ArmDisableFiq
|
|
||||||
EXPORT ArmEnableInterrupts
|
|
||||||
EXPORT ArmDisableInterrupts
|
|
||||||
EXPORT ReadCCSIDR
|
|
||||||
EXPORT ReadCLIDR
|
|
||||||
EXPORT ArmReadNsacr
|
|
||||||
EXPORT ArmWriteNsacr
|
|
||||||
|
|
||||||
AREA ArmLibSupportV7, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
ArmIsMpCore
|
RVCT_ASM_EXPORT ArmIsMpCore
|
||||||
mrc p15,0,R0,c0,c0,5
|
mrc p15,0,R0,c0,c0,5
|
||||||
// Get Multiprocessing extension (bit31) & U bit (bit30)
|
// Get Multiprocessing extension (bit31) & U bit (bit30)
|
||||||
and R0, R0, #0xC0000000
|
and R0, R0, #0xC0000000
|
||||||
@ -44,48 +30,48 @@ ArmIsMpCore
|
|||||||
movne R0, #0
|
movne R0, #0
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmHasMpExtensions
|
RVCT_ASM_EXPORT ArmHasMpExtensions
|
||||||
mrc p15,0,R0,c0,c0,5
|
mrc p15,0,R0,c0,c0,5
|
||||||
// Get Multiprocessing extension (bit31)
|
// Get Multiprocessing extension (bit31)
|
||||||
lsr R0, R0, #31
|
lsr R0, R0, #31
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableAsynchronousAbort
|
RVCT_ASM_EXPORT ArmEnableAsynchronousAbort
|
||||||
cpsie a
|
cpsie a
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableAsynchronousAbort
|
RVCT_ASM_EXPORT ArmDisableAsynchronousAbort
|
||||||
cpsid a
|
cpsid a
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableIrq
|
RVCT_ASM_EXPORT ArmEnableIrq
|
||||||
cpsie i
|
cpsie i
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableIrq
|
RVCT_ASM_EXPORT ArmDisableIrq
|
||||||
cpsid i
|
cpsid i
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableFiq
|
RVCT_ASM_EXPORT ArmEnableFiq
|
||||||
cpsie f
|
cpsie f
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableFiq
|
RVCT_ASM_EXPORT ArmDisableFiq
|
||||||
cpsid f
|
cpsid f
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableInterrupts
|
RVCT_ASM_EXPORT ArmEnableInterrupts
|
||||||
cpsie if
|
cpsie if
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableInterrupts
|
RVCT_ASM_EXPORT ArmDisableInterrupts
|
||||||
cpsid if
|
cpsid if
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
@ -94,7 +80,7 @@ ArmDisableInterrupts
|
|||||||
// ReadCCSIDR (
|
// ReadCCSIDR (
|
||||||
// IN UINT32 CSSELR
|
// IN UINT32 CSSELR
|
||||||
// )
|
// )
|
||||||
ReadCCSIDR
|
RVCT_ASM_EXPORT ReadCCSIDR
|
||||||
mcr p15,2,r0,c0,c0,0 ; Write Cache Size Selection Register (CSSELR)
|
mcr p15,2,r0,c0,c0,0 ; Write Cache Size Selection Register (CSSELR)
|
||||||
isb
|
isb
|
||||||
mrc p15,1,r0,c0,c0,0 ; Read current CP15 Cache Size ID Register (CCSIDR)
|
mrc p15,1,r0,c0,c0,0 ; Read current CP15 Cache Size ID Register (CCSIDR)
|
||||||
@ -104,15 +90,15 @@ ReadCCSIDR
|
|||||||
// ReadCLIDR (
|
// ReadCLIDR (
|
||||||
// IN UINT32 CSSELR
|
// IN UINT32 CSSELR
|
||||||
// )
|
// )
|
||||||
ReadCLIDR
|
RVCT_ASM_EXPORT ReadCLIDR
|
||||||
mrc p15,1,r0,c0,c0,1 ; Read CP15 Cache Level ID Register
|
mrc p15,1,r0,c0,c0,1 ; Read CP15 Cache Level ID Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadNsacr
|
RVCT_ASM_EXPORT ArmReadNsacr
|
||||||
mrc p15, 0, r0, c1, c1, 2
|
mrc p15, 0, r0, c1, c1, 2
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteNsacr
|
RVCT_ASM_EXPORT ArmWriteNsacr
|
||||||
mcr p15, 0, r0, c1, c1, 2
|
mcr p15, 0, r0, c1, c1, 2
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
@ -12,107 +12,87 @@
|
|||||||
//
|
//
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
EXPORT ArmReadCntFrq
|
|
||||||
EXPORT ArmWriteCntFrq
|
|
||||||
EXPORT ArmReadCntPct
|
|
||||||
EXPORT ArmReadCntkCtl
|
|
||||||
EXPORT ArmWriteCntkCtl
|
|
||||||
EXPORT ArmReadCntpTval
|
|
||||||
EXPORT ArmWriteCntpTval
|
|
||||||
EXPORT ArmReadCntpCtl
|
|
||||||
EXPORT ArmWriteCntpCtl
|
|
||||||
EXPORT ArmReadCntvTval
|
|
||||||
EXPORT ArmWriteCntvTval
|
|
||||||
EXPORT ArmReadCntvCtl
|
|
||||||
EXPORT ArmWriteCntvCtl
|
|
||||||
EXPORT ArmReadCntvCt
|
|
||||||
EXPORT ArmReadCntpCval
|
|
||||||
EXPORT ArmWriteCntpCval
|
|
||||||
EXPORT ArmReadCntvCval
|
|
||||||
EXPORT ArmWriteCntvCval
|
|
||||||
EXPORT ArmReadCntvOff
|
|
||||||
EXPORT ArmWriteCntvOff
|
|
||||||
|
|
||||||
AREA ArmV7ArchTimerSupport, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
|
|
||||||
ArmReadCntFrq
|
RVCT_ASM_EXPORT ArmReadCntFrq
|
||||||
mrc p15, 0, r0, c14, c0, 0 ; Read CNTFRQ
|
mrc p15, 0, r0, c14, c0, 0 ; Read CNTFRQ
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntFrq
|
RVCT_ASM_EXPORT ArmWriteCntFrq
|
||||||
mcr p15, 0, r0, c14, c0, 0 ; Write to CNTFRQ
|
mcr p15, 0, r0, c14, c0, 0 ; Write to CNTFRQ
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntPct
|
RVCT_ASM_EXPORT ArmReadCntPct
|
||||||
mrrc p15, 0, r0, r1, c14 ; Read CNTPT (Physical counter register)
|
mrrc p15, 0, r0, r1, c14 ; Read CNTPT (Physical counter register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntkCtl
|
RVCT_ASM_EXPORT ArmReadCntkCtl
|
||||||
mrc p15, 0, r0, c14, c1, 0 ; Read CNTK_CTL (Timer PL1 Control Register)
|
mrc p15, 0, r0, c14, c1, 0 ; Read CNTK_CTL (Timer PL1 Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntkCtl
|
RVCT_ASM_EXPORT ArmWriteCntkCtl
|
||||||
mcr p15, 0, r0, c14, c1, 0 ; Write to CNTK_CTL (Timer PL1 Control Register)
|
mcr p15, 0, r0, c14, c1, 0 ; Write to CNTK_CTL (Timer PL1 Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntpTval
|
RVCT_ASM_EXPORT ArmReadCntpTval
|
||||||
mrc p15, 0, r0, c14, c2, 0 ; Read CNTP_TVAL (PL1 physical timer value register)
|
mrc p15, 0, r0, c14, c2, 0 ; Read CNTP_TVAL (PL1 physical timer value register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntpTval
|
RVCT_ASM_EXPORT ArmWriteCntpTval
|
||||||
mcr p15, 0, r0, c14, c2, 0 ; Write to CNTP_TVAL (PL1 physical timer value register)
|
mcr p15, 0, r0, c14, c2, 0 ; Write to CNTP_TVAL (PL1 physical timer value register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntpCtl
|
RVCT_ASM_EXPORT ArmReadCntpCtl
|
||||||
mrc p15, 0, r0, c14, c2, 1 ; Read CNTP_CTL (PL1 Physical Timer Control Register)
|
mrc p15, 0, r0, c14, c2, 1 ; Read CNTP_CTL (PL1 Physical Timer Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntpCtl
|
RVCT_ASM_EXPORT ArmWriteCntpCtl
|
||||||
mcr p15, 0, r0, c14, c2, 1 ; Write to CNTP_CTL (PL1 Physical Timer Control Register)
|
mcr p15, 0, r0, c14, c2, 1 ; Write to CNTP_CTL (PL1 Physical Timer Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntvTval
|
RVCT_ASM_EXPORT ArmReadCntvTval
|
||||||
mrc p15, 0, r0, c14, c3, 0 ; Read CNTV_TVAL (Virtual Timer Value register)
|
mrc p15, 0, r0, c14, c3, 0 ; Read CNTV_TVAL (Virtual Timer Value register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntvTval
|
RVCT_ASM_EXPORT ArmWriteCntvTval
|
||||||
mcr p15, 0, r0, c14, c3, 0 ; Write to CNTV_TVAL (Virtual Timer Value register)
|
mcr p15, 0, r0, c14, c3, 0 ; Write to CNTV_TVAL (Virtual Timer Value register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntvCtl
|
RVCT_ASM_EXPORT ArmReadCntvCtl
|
||||||
mrc p15, 0, r0, c14, c3, 1 ; Read CNTV_CTL (Virtual Timer Control Register)
|
mrc p15, 0, r0, c14, c3, 1 ; Read CNTV_CTL (Virtual Timer Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntvCtl
|
RVCT_ASM_EXPORT ArmWriteCntvCtl
|
||||||
mcr p15, 0, r0, c14, c3, 1 ; Write to CNTV_CTL (Virtual Timer Control Register)
|
mcr p15, 0, r0, c14, c3, 1 ; Write to CNTV_CTL (Virtual Timer Control Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntvCt
|
RVCT_ASM_EXPORT ArmReadCntvCt
|
||||||
mrrc p15, 1, r0, r1, c14 ; Read CNTVCT (Virtual Count Register)
|
mrrc p15, 1, r0, r1, c14 ; Read CNTVCT (Virtual Count Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntpCval
|
RVCT_ASM_EXPORT ArmReadCntpCval
|
||||||
mrrc p15, 2, r0, r1, c14 ; Read CNTP_CTVAL (Physical Timer Compare Value Register)
|
mrrc p15, 2, r0, r1, c14 ; Read CNTP_CTVAL (Physical Timer Compare Value Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntpCval
|
RVCT_ASM_EXPORT ArmWriteCntpCval
|
||||||
mcrr p15, 2, r0, r1, c14 ; Write to CNTP_CTVAL (Physical Timer Compare Value Register)
|
mcrr p15, 2, r0, r1, c14 ; Write to CNTP_CTVAL (Physical Timer Compare Value Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntvCval
|
RVCT_ASM_EXPORT ArmReadCntvCval
|
||||||
mrrc p15, 3, r0, r1, c14 ; Read CNTV_CTVAL (Virtual Timer Compare Value Register)
|
mrrc p15, 3, r0, r1, c14 ; Read CNTV_CTVAL (Virtual Timer Compare Value Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntvCval
|
RVCT_ASM_EXPORT ArmWriteCntvCval
|
||||||
mcrr p15, 3, r0, r1, c14 ; write to CNTV_CTVAL (Virtual Timer Compare Value Register)
|
mcrr p15, 3, r0, r1, c14 ; write to CNTV_CTVAL (Virtual Timer Compare Value Register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCntvOff
|
RVCT_ASM_EXPORT ArmReadCntvOff
|
||||||
mrrc p15, 4, r0, r1, c14 ; Read CNTVOFF (virtual Offset register)
|
mrrc p15, 4, r0, r1, c14 ; Read CNTVOFF (virtual Offset register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCntvOff
|
RVCT_ASM_EXPORT ArmWriteCntvOff
|
||||||
mcrr p15, 4, r0, r1, c14 ; Write to CNTVOFF (Virtual Offset register)
|
mcrr p15, 4, r0, r1, c14 ; Write to CNTVOFF (Virtual Offset register)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
@ -13,43 +13,8 @@
|
|||||||
//
|
//
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
EXPORT ArmInvalidateInstructionCache
|
|
||||||
EXPORT ArmInvalidateDataCacheEntryByMVA
|
|
||||||
EXPORT ArmCleanDataCacheEntryByMVA
|
|
||||||
EXPORT ArmCleanInvalidateDataCacheEntryByMVA
|
|
||||||
EXPORT ArmInvalidateDataCacheEntryBySetWay
|
|
||||||
EXPORT ArmCleanDataCacheEntryBySetWay
|
|
||||||
EXPORT ArmCleanInvalidateDataCacheEntryBySetWay
|
|
||||||
EXPORT ArmEnableMmu
|
|
||||||
EXPORT ArmDisableMmu
|
|
||||||
EXPORT ArmDisableCachesAndMmu
|
|
||||||
EXPORT ArmMmuEnabled
|
|
||||||
EXPORT ArmEnableDataCache
|
|
||||||
EXPORT ArmDisableDataCache
|
|
||||||
EXPORT ArmEnableInstructionCache
|
|
||||||
EXPORT ArmDisableInstructionCache
|
|
||||||
EXPORT ArmEnableSWPInstruction
|
|
||||||
EXPORT ArmEnableBranchPrediction
|
|
||||||
EXPORT ArmDisableBranchPrediction
|
|
||||||
EXPORT ArmSetLowVectors
|
|
||||||
EXPORT ArmSetHighVectors
|
|
||||||
EXPORT ArmV7AllDataCachesOperation
|
|
||||||
EXPORT ArmDataMemoryBarrier
|
|
||||||
EXPORT ArmDataSynchronizationBarrier
|
|
||||||
EXPORT ArmInstructionSynchronizationBarrier
|
|
||||||
EXPORT ArmReadVBar
|
|
||||||
EXPORT ArmWriteVBar
|
|
||||||
EXPORT ArmEnableVFP
|
|
||||||
EXPORT ArmCallWFI
|
|
||||||
EXPORT ArmReadCbar
|
|
||||||
EXPORT ArmReadMpidr
|
|
||||||
EXPORT ArmReadTpidrurw
|
|
||||||
EXPORT ArmWriteTpidrurw
|
|
||||||
EXPORT ArmIsArchTimerImplemented
|
|
||||||
EXPORT ArmReadIdPfr1
|
|
||||||
EXPORT ArmReadIdMmfr0
|
|
||||||
|
|
||||||
AREA ArmV7Support, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
PRESERVE8
|
PRESERVE8
|
||||||
|
|
||||||
DC_ON EQU ( 0x1:SHL:2 )
|
DC_ON EQU ( 0x1:SHL:2 )
|
||||||
@ -60,41 +25,41 @@ CTRL_B_BIT EQU (1 << 7)
|
|||||||
CTRL_I_BIT EQU (1 << 12)
|
CTRL_I_BIT EQU (1 << 12)
|
||||||
|
|
||||||
|
|
||||||
ArmInvalidateDataCacheEntryByMVA
|
RVCT_ASM_EXPORT ArmInvalidateDataCacheEntryByMVA
|
||||||
mcr p15, 0, r0, c7, c6, 1 ; invalidate single data cache line
|
mcr p15, 0, r0, c7, c6, 1 ; invalidate single data cache line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmCleanDataCacheEntryByMVA
|
RVCT_ASM_EXPORT ArmCleanDataCacheEntryByMVA
|
||||||
mcr p15, 0, r0, c7, c10, 1 ; clean single data cache line
|
mcr p15, 0, r0, c7, c10, 1 ; clean single data cache line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmCleanInvalidateDataCacheEntryByMVA
|
RVCT_ASM_EXPORT ArmCleanInvalidateDataCacheEntryByMVA
|
||||||
mcr p15, 0, r0, c7, c14, 1 ; clean and invalidate single data cache line
|
mcr p15, 0, r0, c7, c14, 1 ; clean and invalidate single data cache line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmInvalidateDataCacheEntryBySetWay
|
RVCT_ASM_EXPORT ArmInvalidateDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line
|
mcr p15, 0, r0, c7, c6, 2 ; Invalidate this line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmCleanInvalidateDataCacheEntryBySetWay
|
RVCT_ASM_EXPORT ArmCleanInvalidateDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line
|
mcr p15, 0, r0, c7, c14, 2 ; Clean and Invalidate this line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmCleanDataCacheEntryBySetWay
|
RVCT_ASM_EXPORT ArmCleanDataCacheEntryBySetWay
|
||||||
mcr p15, 0, r0, c7, c10, 2 ; Clean this line
|
mcr p15, 0, r0, c7, c10, 2 ; Clean this line
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmInvalidateInstructionCache
|
RVCT_ASM_EXPORT ArmInvalidateInstructionCache
|
||||||
mcr p15,0,R0,c7,c5,0 ;Invalidate entire instruction cache
|
mcr p15,0,R0,c7,c5,0 ;Invalidate entire instruction cache
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableMmu
|
RVCT_ASM_EXPORT ArmEnableMmu
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
orr R0,R0,#1 ; Set SCTLR.M bit : Enable MMU
|
orr R0,R0,#1 ; Set SCTLR.M bit : Enable MMU
|
||||||
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
@ -102,7 +67,7 @@ ArmEnableMmu
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableMmu
|
RVCT_ASM_EXPORT ArmDisableMmu
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU
|
bic R0,R0,#1 ; Clear SCTLR.M bit : Disable MMU
|
||||||
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15,0,R0,c1,c0,0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
@ -113,7 +78,7 @@ ArmDisableMmu
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableCachesAndMmu
|
RVCT_ASM_EXPORT ArmDisableCachesAndMmu
|
||||||
mrc p15, 0, r0, c1, c0, 0 ; Get control register
|
mrc p15, 0, r0, c1, c0, 0 ; Get control register
|
||||||
bic r0, r0, #CTRL_M_BIT ; Disable MMU
|
bic r0, r0, #CTRL_M_BIT ; Disable MMU
|
||||||
bic r0, r0, #CTRL_C_BIT ; Disable D Cache
|
bic r0, r0, #CTRL_C_BIT ; Disable D Cache
|
||||||
@ -123,12 +88,12 @@ ArmDisableCachesAndMmu
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmMmuEnabled
|
RVCT_ASM_EXPORT ArmMmuEnabled
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
and R0,R0,#1
|
and R0,R0,#1
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableDataCache
|
RVCT_ASM_EXPORT ArmEnableDataCache
|
||||||
ldr R1,=DC_ON ; Specify SCTLR.C bit : (Data) Cache enable bit
|
ldr R1,=DC_ON ; Specify SCTLR.C bit : (Data) Cache enable bit
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
orr R0,R0,R1 ; Set SCTLR.C bit : Data and unified caches enabled
|
orr R0,R0,R1 ; Set SCTLR.C bit : Data and unified caches enabled
|
||||||
@ -137,7 +102,7 @@ ArmEnableDataCache
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableDataCache
|
RVCT_ASM_EXPORT ArmDisableDataCache
|
||||||
ldr R1,=DC_ON ; Specify SCTLR.C bit : (Data) Cache enable bit
|
ldr R1,=DC_ON ; Specify SCTLR.C bit : (Data) Cache enable bit
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
bic R0,R0,R1 ; Clear SCTLR.C bit : Data and unified caches disabled
|
bic R0,R0,R1 ; Clear SCTLR.C bit : Data and unified caches disabled
|
||||||
@ -146,7 +111,7 @@ ArmDisableDataCache
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableInstructionCache
|
RVCT_ASM_EXPORT ArmEnableInstructionCache
|
||||||
ldr R1,=IC_ON ; Specify SCTLR.I bit : Instruction cache enable bit
|
ldr R1,=IC_ON ; Specify SCTLR.I bit : Instruction cache enable bit
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
orr R0,R0,R1 ; Set SCTLR.I bit : Instruction caches enabled
|
orr R0,R0,R1 ; Set SCTLR.I bit : Instruction caches enabled
|
||||||
@ -155,7 +120,7 @@ ArmEnableInstructionCache
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableInstructionCache
|
RVCT_ASM_EXPORT ArmDisableInstructionCache
|
||||||
ldr R1,=IC_ON ; Specify SCTLR.I bit : Instruction cache enable bit
|
ldr R1,=IC_ON ; Specify SCTLR.I bit : Instruction cache enable bit
|
||||||
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15,0,R0,c1,c0,0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
BIC R0,R0,R1 ; Clear SCTLR.I bit : Instruction caches disabled
|
BIC R0,R0,R1 ; Clear SCTLR.I bit : Instruction caches disabled
|
||||||
@ -163,14 +128,14 @@ ArmDisableInstructionCache
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableSWPInstruction
|
RVCT_ASM_EXPORT ArmEnableSWPInstruction
|
||||||
mrc p15, 0, r0, c1, c0, 0
|
mrc p15, 0, r0, c1, c0, 0
|
||||||
orr r0, r0, #0x00000400
|
orr r0, r0, #0x00000400
|
||||||
mcr p15, 0, r0, c1, c0, 0
|
mcr p15, 0, r0, c1, c0, 0
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmEnableBranchPrediction
|
RVCT_ASM_EXPORT ArmEnableBranchPrediction
|
||||||
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
orr r0, r0, #0x00000800 ;
|
orr r0, r0, #0x00000800 ;
|
||||||
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
@ -178,7 +143,7 @@ ArmEnableBranchPrediction
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDisableBranchPrediction
|
RVCT_ASM_EXPORT ArmDisableBranchPrediction
|
||||||
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
bic r0, r0, #0x00000800 ;
|
bic r0, r0, #0x00000800 ;
|
||||||
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
@ -186,21 +151,21 @@ ArmDisableBranchPrediction
|
|||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmSetLowVectors
|
RVCT_ASM_EXPORT ArmSetLowVectors
|
||||||
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
bic r0, r0, #0x00002000 ; clear V bit
|
bic r0, r0, #0x00002000 ; clear V bit
|
||||||
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmSetHighVectors
|
RVCT_ASM_EXPORT ArmSetHighVectors
|
||||||
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
mrc p15, 0, r0, c1, c0, 0 ; Read SCTLR into R0 (Read control register configuration data)
|
||||||
orr r0, r0, #0x00002000 ; Set V bit
|
orr r0, r0, #0x00002000 ; Set V bit
|
||||||
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
mcr p15, 0, r0, c1, c0, 0 ; Write R0 into SCTLR (Write control register configuration data)
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmV7AllDataCachesOperation
|
RVCT_ASM_EXPORT ArmV7AllDataCachesOperation
|
||||||
stmfd SP!,{r4-r12, LR}
|
stmfd SP!,{r4-r12, LR}
|
||||||
mov R1, R0 ; Save Function call in R1
|
mov R1, R0 ; Save Function call in R1
|
||||||
mrc p15, 1, R6, c0, c0, 1 ; Read CLIDR
|
mrc p15, 1, R6, c0, c0, 1 ; Read CLIDR
|
||||||
@ -249,24 +214,24 @@ Finished
|
|||||||
ldmfd SP!, {r4-r12, lr}
|
ldmfd SP!, {r4-r12, lr}
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDataMemoryBarrier
|
RVCT_ASM_EXPORT ArmDataMemoryBarrier
|
||||||
dmb
|
dmb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmDataSynchronizationBarrier
|
RVCT_ASM_EXPORT ArmDataSynchronizationBarrier
|
||||||
dsb
|
dsb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmInstructionSynchronizationBarrier
|
RVCT_ASM_EXPORT ArmInstructionSynchronizationBarrier
|
||||||
isb
|
isb
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmReadVBar
|
RVCT_ASM_EXPORT ArmReadVBar
|
||||||
// Set the Address of the Vector Table in the VBAR register
|
// Set the Address of the Vector Table in the VBAR register
|
||||||
mrc p15, 0, r0, c12, c0, 0
|
mrc p15, 0, r0, c12, c0, 0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteVBar
|
RVCT_ASM_EXPORT ArmWriteVBar
|
||||||
// Set the Address of the Vector Table in the VBAR register
|
// Set the Address of the Vector Table in the VBAR register
|
||||||
mcr p15, 0, r0, c12, c0, 0
|
mcr p15, 0, r0, c12, c0, 0
|
||||||
// Ensure the SCTLR.V bit is clear
|
// Ensure the SCTLR.V bit is clear
|
||||||
@ -276,7 +241,7 @@ ArmWriteVBar
|
|||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmEnableVFP
|
RVCT_ASM_EXPORT ArmEnableVFP
|
||||||
// Read CPACR (Coprocessor Access Control Register)
|
// Read CPACR (Coprocessor Access Control Register)
|
||||||
mrc p15, 0, r0, c1, c0, 2
|
mrc p15, 0, r0, c1, c0, 2
|
||||||
// Enable VPF access (Full Access to CP10, CP11) (V* instructions)
|
// Enable VPF access (Full Access to CP10, CP11) (V* instructions)
|
||||||
@ -289,37 +254,37 @@ ArmEnableVFP
|
|||||||
mcr p10,#0x7,r0,c8,c0,#0
|
mcr p10,#0x7,r0,c8,c0,#0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmCallWFI
|
RVCT_ASM_EXPORT ArmCallWFI
|
||||||
wfi
|
wfi
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
//Note: Return 0 in Uniprocessor implementation
|
//Note: Return 0 in Uniprocessor implementation
|
||||||
ArmReadCbar
|
RVCT_ASM_EXPORT ArmReadCbar
|
||||||
mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
|
mrc p15, 4, r0, c15, c0, 0 //Read Configuration Base Address Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadMpidr
|
RVCT_ASM_EXPORT ArmReadMpidr
|
||||||
mrc p15, 0, r0, c0, c0, 5 ; read MPIDR
|
mrc p15, 0, r0, c0, c0, 5 ; read MPIDR
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadTpidrurw
|
RVCT_ASM_EXPORT ArmReadTpidrurw
|
||||||
mrc p15, 0, r0, c13, c0, 2 ; read TPIDRURW
|
mrc p15, 0, r0, c13, c0, 2 ; read TPIDRURW
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteTpidrurw
|
RVCT_ASM_EXPORT ArmWriteTpidrurw
|
||||||
mcr p15, 0, r0, c13, c0, 2 ; write TPIDRURW
|
mcr p15, 0, r0, c13, c0, 2 ; write TPIDRURW
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmIsArchTimerImplemented
|
RVCT_ASM_EXPORT ArmIsArchTimerImplemented
|
||||||
mrc p15, 0, r0, c0, c1, 1 ; Read ID_PFR1
|
mrc p15, 0, r0, c0, c1, 1 ; Read ID_PFR1
|
||||||
and r0, r0, #0x000F0000
|
and r0, r0, #0x000F0000
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadIdPfr1
|
RVCT_ASM_EXPORT ArmReadIdPfr1
|
||||||
mrc p15, 0, r0, c0, c1, 1 ; Read ID_PFR1 Register
|
mrc p15, 0, r0, c0, c1, 1 ; Read ID_PFR1 Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadIdMmfr0
|
RVCT_ASM_EXPORT ArmReadIdMmfr0
|
||||||
mrc p15, 0, r0, c0, c1, 4 ; Read ID_MMFR0 Register
|
mrc p15, 0, r0, c0, c1, 4 ; Read ID_MMFR0 Register
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
@ -17,62 +17,36 @@
|
|||||||
|
|
||||||
INCLUDE AsmMacroIoLib.inc
|
INCLUDE AsmMacroIoLib.inc
|
||||||
|
|
||||||
EXPORT ArmReadMidr
|
|
||||||
EXPORT ArmCacheInfo
|
|
||||||
EXPORT ArmGetInterruptState
|
|
||||||
EXPORT ArmGetFiqState
|
|
||||||
EXPORT ArmGetTTBR0BaseAddress
|
|
||||||
EXPORT ArmSetTTBR0
|
|
||||||
EXPORT ArmSetDomainAccessControl
|
|
||||||
EXPORT CPSRMaskInsert
|
|
||||||
EXPORT CPSRRead
|
|
||||||
EXPORT ArmReadCpacr
|
|
||||||
EXPORT ArmWriteCpacr
|
|
||||||
EXPORT ArmWriteAuxCr
|
|
||||||
EXPORT ArmReadAuxCr
|
|
||||||
EXPORT ArmInvalidateTlb
|
|
||||||
EXPORT ArmUpdateTranslationTableEntry
|
|
||||||
EXPORT ArmReadScr
|
|
||||||
EXPORT ArmWriteScr
|
|
||||||
EXPORT ArmReadMVBar
|
|
||||||
EXPORT ArmWriteMVBar
|
|
||||||
EXPORT ArmReadHVBar
|
|
||||||
EXPORT ArmWriteHVBar
|
|
||||||
EXPORT ArmCallWFE
|
|
||||||
EXPORT ArmCallSEV
|
|
||||||
EXPORT ArmReadSctlr
|
|
||||||
EXPORT ArmReadCpuActlr
|
|
||||||
EXPORT ArmWriteCpuActlr
|
|
||||||
|
|
||||||
AREA ArmLibSupport, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
ArmReadMidr
|
RVCT_ASM_EXPORT ArmReadMidr
|
||||||
mrc p15,0,R0,c0,c0,0
|
mrc p15,0,R0,c0,c0,0
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmCacheInfo
|
RVCT_ASM_EXPORT ArmCacheInfo
|
||||||
mrc p15,0,R0,c0,c0,1
|
mrc p15,0,R0,c0,c0,1
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmGetInterruptState
|
RVCT_ASM_EXPORT ArmGetInterruptState
|
||||||
mrs R0,CPSR
|
mrs R0,CPSR
|
||||||
tst R0,#0x80 // Check if IRQ is enabled.
|
tst R0,#0x80 // Check if IRQ is enabled.
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmGetFiqState
|
RVCT_ASM_EXPORT ArmGetFiqState
|
||||||
mrs R0,CPSR
|
mrs R0,CPSR
|
||||||
tst R0,#0x40 // Check if FIQ is enabled.
|
tst R0,#0x40 // Check if FIQ is enabled.
|
||||||
moveq R0,#1
|
moveq R0,#1
|
||||||
movne R0,#0
|
movne R0,#0
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
ArmSetDomainAccessControl
|
RVCT_ASM_EXPORT ArmSetDomainAccessControl
|
||||||
mcr p15,0,r0,c3,c0,0
|
mcr p15,0,r0,c3,c0,0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
CPSRMaskInsert // on entry, r0 is the mask and r1 is the field to insert
|
RVCT_ASM_EXPORT CPSRMaskInsert
|
||||||
stmfd sp!, {r4-r12, lr} // save all the banked registers
|
stmfd sp!, {r4-r12, lr} // save all the banked registers
|
||||||
mov r3, sp // copy the stack pointer into a non-banked register
|
mov r3, sp // copy the stack pointer into a non-banked register
|
||||||
mrs r2, cpsr // read the cpsr
|
mrs r2, cpsr // read the cpsr
|
||||||
@ -85,33 +59,33 @@ CPSRMaskInsert // on entry, r0 is the mask and r1 is the field to insert
|
|||||||
ldmfd sp!, {r4-r12, lr} // restore registers
|
ldmfd sp!, {r4-r12, lr} // restore registers
|
||||||
bx lr // return (hopefully thumb-safe!) // return (hopefully thumb-safe!)
|
bx lr // return (hopefully thumb-safe!) // return (hopefully thumb-safe!)
|
||||||
|
|
||||||
CPSRRead
|
RVCT_ASM_EXPORT CPSRRead
|
||||||
mrs r0, cpsr
|
mrs r0, cpsr
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadCpacr
|
RVCT_ASM_EXPORT ArmReadCpacr
|
||||||
mrc p15, 0, r0, c1, c0, 2
|
mrc p15, 0, r0, c1, c0, 2
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCpacr
|
RVCT_ASM_EXPORT ArmWriteCpacr
|
||||||
mcr p15, 0, r0, c1, c0, 2
|
mcr p15, 0, r0, c1, c0, 2
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteAuxCr
|
RVCT_ASM_EXPORT ArmWriteAuxCr
|
||||||
mcr p15, 0, r0, c1, c0, 1
|
mcr p15, 0, r0, c1, c0, 1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadAuxCr
|
RVCT_ASM_EXPORT ArmReadAuxCr
|
||||||
mrc p15, 0, r0, c1, c0, 1
|
mrc p15, 0, r0, c1, c0, 1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmSetTTBR0
|
RVCT_ASM_EXPORT ArmSetTTBR0
|
||||||
mcr p15,0,r0,c2,c0,0
|
mcr p15,0,r0,c2,c0,0
|
||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmGetTTBR0BaseAddress
|
RVCT_ASM_EXPORT ArmGetTTBR0BaseAddress
|
||||||
mrc p15,0,r0,c2,c0,0
|
mrc p15,0,r0,c2,c0,0
|
||||||
LoadConstantToReg(0xFFFFC000, r1)
|
LoadConstantToReg(0xFFFFC000, r1)
|
||||||
and r0, r0, r1
|
and r0, r0, r1
|
||||||
@ -124,7 +98,7 @@ ArmGetTTBR0BaseAddress
|
|||||||
// IN VOID *TranslationTableEntry // R0
|
// IN VOID *TranslationTableEntry // R0
|
||||||
// IN VOID *MVA // R1
|
// IN VOID *MVA // R1
|
||||||
// );
|
// );
|
||||||
ArmUpdateTranslationTableEntry
|
RVCT_ASM_EXPORT ArmUpdateTranslationTableEntry
|
||||||
mcr p15,0,R0,c7,c14,1 // DCCIMVAC Clean data cache by MVA
|
mcr p15,0,R0,c7,c14,1 // DCCIMVAC Clean data cache by MVA
|
||||||
dsb
|
dsb
|
||||||
mcr p15,0,R1,c8,c7,1 // TLBIMVA TLB Invalidate MVA
|
mcr p15,0,R1,c8,c7,1 // TLBIMVA TLB Invalidate MVA
|
||||||
@ -133,7 +107,7 @@ ArmUpdateTranslationTableEntry
|
|||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmInvalidateTlb
|
RVCT_ASM_EXPORT ArmInvalidateTlb
|
||||||
mov r0,#0
|
mov r0,#0
|
||||||
mcr p15,0,r0,c8,c7,0
|
mcr p15,0,r0,c8,c7,0
|
||||||
mcr p15,0,R9,c7,c5,6 // BPIALL Invalidate Branch predictor array. R9 == NoOp
|
mcr p15,0,R9,c7,c5,6 // BPIALL Invalidate Branch predictor array. R9 == NoOp
|
||||||
@ -141,48 +115,48 @@ ArmInvalidateTlb
|
|||||||
isb
|
isb
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadScr
|
RVCT_ASM_EXPORT ArmReadScr
|
||||||
mrc p15, 0, r0, c1, c1, 0
|
mrc p15, 0, r0, c1, c1, 0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteScr
|
RVCT_ASM_EXPORT ArmWriteScr
|
||||||
mcr p15, 0, r0, c1, c1, 0
|
mcr p15, 0, r0, c1, c1, 0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadHVBar
|
RVCT_ASM_EXPORT ArmReadHVBar
|
||||||
mrc p15, 4, r0, c12, c0, 0
|
mrc p15, 4, r0, c12, c0, 0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteHVBar
|
RVCT_ASM_EXPORT ArmWriteHVBar
|
||||||
mcr p15, 4, r0, c12, c0, 0
|
mcr p15, 4, r0, c12, c0, 0
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadMVBar
|
RVCT_ASM_EXPORT ArmReadMVBar
|
||||||
mrc p15, 0, r0, c12, c0, 1
|
mrc p15, 0, r0, c12, c0, 1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteMVBar
|
RVCT_ASM_EXPORT ArmWriteMVBar
|
||||||
mcr p15, 0, r0, c12, c0, 1
|
mcr p15, 0, r0, c12, c0, 1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmCallWFE
|
RVCT_ASM_EXPORT ArmCallWFE
|
||||||
wfe
|
wfe
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmCallSEV
|
RVCT_ASM_EXPORT ArmCallSEV
|
||||||
sev
|
sev
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmReadSctlr
|
RVCT_ASM_EXPORT ArmReadSctlr
|
||||||
mrc p15, 0, r0, c1, c0, 0 // Read SCTLR into R0 (Read control register configuration data)
|
mrc p15, 0, r0, c1, c0, 0 // Read SCTLR into R0 (Read control register configuration data)
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
|
|
||||||
ArmReadCpuActlr
|
RVCT_ASM_EXPORT ArmReadCpuActlr
|
||||||
mrc p15, 0, r0, c1, c0, 1
|
mrc p15, 0, r0, c1, c0, 1
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
ArmWriteCpuActlr
|
RVCT_ASM_EXPORT ArmWriteCpuActlr
|
||||||
mcr p15, 0, r0, c1, c0, 1
|
mcr p15, 0, r0, c1, c0, 1
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
|
@ -11,11 +11,10 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
EXPORT ArmCallSmc
|
|
||||||
|
|
||||||
AREA ArmSmc, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
ArmCallSmc
|
RVCT_ASM_EXPORT ArmCallSmc
|
||||||
push {r4-r8}
|
push {r4-r8}
|
||||||
// r0 will be popped just after the SMC call
|
// r0 will be popped just after the SMC call
|
||||||
push {r0}
|
push {r0}
|
||||||
|
@ -11,11 +11,10 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
EXPORT ArmCallSmc
|
|
||||||
|
|
||||||
AREA ArmSmc, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
ArmCallSmc
|
RVCT_ASM_EXPORT ArmCallSmc
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
END
|
END
|
||||||
|
@ -37,11 +37,10 @@ InternalMemCopyMem (
|
|||||||
IN UINTN Length
|
IN UINTN Length
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
EXPORT InternalMemCopyMem
|
|
||||||
|
|
||||||
AREA AsmMemStuff, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
InternalMemCopyMem
|
RVCT_ASM_EXPORT InternalMemCopyMem
|
||||||
stmfd sp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
// Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length)
|
// Save the input parameters in extra registers (r11 = destination, r14 = source, r12 = length)
|
||||||
mov r11, r0
|
mov r11, r0
|
||||||
|
@ -34,11 +34,10 @@ InternalMemSetMem (
|
|||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
EXPORT InternalMemSetMem
|
|
||||||
|
|
||||||
AREA AsmMemStuff, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
InternalMemSetMem
|
RVCT_ASM_EXPORT InternalMemSetMem
|
||||||
stmfd sp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
tst r0, #3
|
tst r0, #3
|
||||||
movne r3, #0
|
movne r3, #0
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
DebugLib
|
DebugLib
|
||||||
|
@ -37,11 +37,10 @@ InternalMemCopyMem (
|
|||||||
IN UINTN Length
|
IN UINTN Length
|
||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
EXPORT InternalMemCopyMem
|
|
||||||
|
|
||||||
AREA AsmMemStuff, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
InternalMemCopyMem
|
RVCT_ASM_EXPORT InternalMemCopyMem
|
||||||
stmfd sp!, {r4, r9, lr}
|
stmfd sp!, {r4, r9, lr}
|
||||||
tst r0, #3
|
tst r0, #3
|
||||||
mov r4, r0
|
mov r4, r0
|
||||||
|
@ -34,11 +34,10 @@ InternalMemSetMem (
|
|||||||
)
|
)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
EXPORT InternalMemSetMem
|
|
||||||
|
|
||||||
AREA AsmMemStuff, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
InternalMemSetMem
|
RVCT_ASM_EXPORT InternalMemSetMem
|
||||||
stmfd sp!, {lr}
|
stmfd sp!, {lr}
|
||||||
tst r0, #3
|
tst r0, #3
|
||||||
movne r3, #0
|
movne r3, #0
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
DebugLib
|
DebugLib
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_lasr
|
|
||||||
|
|
||||||
AREA Math, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;UINT32
|
;UINT32
|
||||||
@ -25,7 +24,7 @@
|
|||||||
; IN UINT32 Divisor
|
; IN UINT32 Divisor
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_lasr
|
RVCT_ASM_EXPORT __aeabi_lasr
|
||||||
SUBS r3,r2,#0x20
|
SUBS r3,r2,#0x20
|
||||||
BPL {pc} + 0x18 ; 0x1c
|
BPL {pc} + 0x18 ; 0x1c
|
||||||
RSB r3,r2,#0x20
|
RSB r3,r2,#0x20
|
||||||
|
@ -13,10 +13,9 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_ldivmod
|
|
||||||
EXTERN __aeabi_uldivmod
|
EXTERN __aeabi_uldivmod
|
||||||
|
|
||||||
AREA Math, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;UINT32
|
;UINT32
|
||||||
@ -27,7 +26,7 @@
|
|||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
|
|
||||||
__aeabi_ldivmod
|
RVCT_ASM_EXPORT __aeabi_ldivmod
|
||||||
PUSH {r4,lr}
|
PUSH {r4,lr}
|
||||||
ASRS r4,r1,#1
|
ASRS r4,r1,#1
|
||||||
EOR r4,r4,r3,LSR #1
|
EOR r4,r4,r3,LSR #1
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_llsl
|
|
||||||
|
|
||||||
AREA Math, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;VOID
|
;VOID
|
||||||
@ -27,7 +26,7 @@
|
|||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
|
|
||||||
__aeabi_llsl
|
RVCT_ASM_EXPORT __aeabi_llsl
|
||||||
SUBS r3,r2,#0x20
|
SUBS r3,r2,#0x20
|
||||||
BPL {pc} + 0x18 ; 0x1c
|
BPL {pc} + 0x18 ; 0x1c
|
||||||
RSB r3,r2,#0x20
|
RSB r3,r2,#0x20
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_llsr
|
|
||||||
|
|
||||||
AREA Math, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;VOID
|
;VOID
|
||||||
@ -26,7 +25,7 @@
|
|||||||
; IN UINT32 Size
|
; IN UINT32 Size
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_llsr
|
RVCT_ASM_EXPORT __aeabi_llsr
|
||||||
SUBS r3,r2,#0x20
|
SUBS r3,r2,#0x20
|
||||||
BPL {pc} + 0x18 ; 0x1c
|
BPL {pc} + 0x18 ; 0x1c
|
||||||
RSB r3,r2,#0x20
|
RSB r3,r2,#0x20
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_memcpy
|
|
||||||
|
|
||||||
AREA Memcpy, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;VOID
|
;VOID
|
||||||
@ -26,7 +25,7 @@
|
|||||||
; IN UINT32 Size
|
; IN UINT32 Size
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_memcpy
|
RVCT_ASM_EXPORT __aeabi_memcpy
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
bxeq lr
|
bxeq lr
|
||||||
push {lr}
|
push {lr}
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_memcpy4
|
|
||||||
|
|
||||||
AREA Memcpy4, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;VOID
|
;VOID
|
||||||
@ -26,7 +25,7 @@
|
|||||||
; IN UINT32 Size
|
; IN UINT32 Size
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_memcpy4
|
RVCT_ASM_EXPORT __aeabi_memcpy4
|
||||||
stmdb sp!, {r4, lr}
|
stmdb sp!, {r4, lr}
|
||||||
subs r2, r2, #32 ; 0x20
|
subs r2, r2, #32 ; 0x20
|
||||||
bcc memcpy4_label2
|
bcc memcpy4_label2
|
||||||
|
@ -13,9 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_memmove
|
|
||||||
|
|
||||||
AREA Memmove, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;VOID
|
;VOID
|
||||||
@ -26,7 +25,7 @@
|
|||||||
; IN UINT32 Size
|
; IN UINT32 Size
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_memmove
|
RVCT_ASM_EXPORT __aeabi_memmove
|
||||||
CMP r2, #0
|
CMP r2, #0
|
||||||
BXEQ lr
|
BXEQ lr
|
||||||
CMP r0, r1
|
CMP r0, r1
|
||||||
|
@ -14,11 +14,10 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXPORT __ARM_switch8
|
|
||||||
|
|
||||||
AREA ArmSwitch, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
__ARM_switch8
|
RVCT_ASM_EXPORT __ARM_switch8
|
||||||
LDRB r12,[lr,#-1]
|
LDRB r12,[lr,#-1]
|
||||||
CMP r3,r12
|
CMP r3,r12
|
||||||
LDRBCC r3,[lr,r3]
|
LDRBCC r3,[lr,r3]
|
||||||
|
@ -14,9 +14,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_uldivmod
|
|
||||||
|
|
||||||
AREA Uldivmod, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;UINT64
|
;UINT64
|
||||||
@ -26,7 +25,7 @@
|
|||||||
; IN UINT64 Divisor
|
; IN UINT64 Divisor
|
||||||
; )
|
; )
|
||||||
;
|
;
|
||||||
__aeabi_uldivmod
|
RVCT_ASM_EXPORT __aeabi_uldivmod
|
||||||
stmdb sp!, {r4, r5, r6, lr}
|
stmdb sp!, {r4, r5, r6, lr}
|
||||||
mov r4, r1
|
mov r4, r1
|
||||||
mov r5, r0
|
mov r5, r0
|
||||||
|
@ -14,10 +14,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_uread4
|
|
||||||
EXPORT __aeabi_uread8
|
|
||||||
|
|
||||||
AREA Uread4, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;UINT32
|
;UINT32
|
||||||
@ -26,7 +24,7 @@
|
|||||||
; IN VOID *Pointer
|
; IN VOID *Pointer
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_uread4
|
RVCT_ASM_EXPORT __aeabi_uread4
|
||||||
ldrb r1, [r0]
|
ldrb r1, [r0]
|
||||||
ldrb r2, [r0, #1]
|
ldrb r2, [r0, #1]
|
||||||
ldrb r3, [r0, #2]
|
ldrb r3, [r0, #2]
|
||||||
@ -43,7 +41,7 @@ __aeabi_uread4
|
|||||||
; IN VOID *Pointer
|
; IN VOID *Pointer
|
||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
__aeabi_uread8
|
RVCT_ASM_EXPORT __aeabi_uread8
|
||||||
mov r3, r0
|
mov r3, r0
|
||||||
|
|
||||||
ldrb r1, [r3]
|
ldrb r1, [r3]
|
||||||
|
@ -13,10 +13,8 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
EXPORT __aeabi_uwrite4
|
|
||||||
EXPORT __aeabi_uwrite8
|
|
||||||
|
|
||||||
AREA Uwrite4, CODE, READONLY
|
INCLUDE AsmMacroExport.inc
|
||||||
|
|
||||||
;
|
;
|
||||||
;UINT32
|
;UINT32
|
||||||
@ -27,7 +25,7 @@
|
|||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
__aeabi_uwrite4
|
RVCT_ASM_EXPORT __aeabi_uwrite4
|
||||||
mov r2, r0, lsr #8
|
mov r2, r0, lsr #8
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
strb r2, [r1, #1]
|
strb r2, [r1, #1]
|
||||||
@ -46,7 +44,7 @@ __aeabi_uwrite4
|
|||||||
; );
|
; );
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
__aeabi_uwrite8
|
RVCT_ASM_EXPORT __aeabi_uwrite8
|
||||||
mov r3, r0, lsr #8
|
mov r3, r0, lsr #8
|
||||||
strb r0, [r2]
|
strb r0, [r2]
|
||||||
strb r3, [r2, #1]
|
strb r3, [r2, #1]
|
||||||
|
@ -102,6 +102,7 @@
|
|||||||
|
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user