Updated Hardware Interrupt protocol to add an EOI member. Added ARM Data/Instruction syncronization barrier support to the ARM lib.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10063 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
andrewfish
2010-02-24 22:38:46 +00:00
parent 14e00c13be
commit 026c3d34ee
10 changed files with 187 additions and 147 deletions

View File

@@ -116,3 +116,34 @@ ArmConfigureMmu (
ArmEnableDataCache();
ArmEnableMmu();
}
VOID
EFIAPI
ArmDataMemoryBarrier (
VOID
)
{
// Should move to assembly with the
}
VOID
EFIAPI
ArmDataSyncronizationBarrier (
VOID
)
{
// MOV R0, #0
// MCR P15, #0, R0, C7, C10, #4}
}
VOID
EFIAPI
ArmInstructionSynchronizationBarrier (
VOID
)
{
}

View File

@@ -30,6 +30,10 @@
.globl ASM_PFX(ArmDisableInstructionCache)
.globl ASM_PFX(ArmEnableBranchPrediction)
.globl ASM_PFX(ArmDisableBranchPrediction)
.globl ASM_PFX(ArmDataMemoryBarrier)
.globl ASM_PFX(ArmDataSyncronizationBarrier)
.globl ASM_PFX(ArmInstructionSynchronizationBarrier)
.set DC_ON, (0x1<<2)
.set IC_ON, (0x1<<12)
@@ -132,4 +136,20 @@ ASM_PFX(ArmDisableBranchPrediction):
mcr p15, 0, r0, c1, c0, 0
bx LR
ASM_PFX(ArmDataMemoryBarrier):
mov R0, #0
mcr P15, #0, R0, C7, C10, #5
bx LR
ASM_PFX(ArmDataSyncronizationBarrier):
mov R0, #0
mcr P15, #0, R0, C7, C10, #4
bx LR
ASM_PFX(ArmInstructionSynchronizationBarrier):
mov R0, #0
mcr P15, #0, R0, C7, C5, #4
bx LR
ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@@ -28,6 +28,9 @@
EXPORT ArmDisableInstructionCache
EXPORT ArmEnableBranchPrediction
EXPORT ArmDisableBranchPrediction
EXPORT ArmDataMemoryBarrier
EXPORT ArmDataSyncronizationBarrier
EXPORT ArmInstructionSynchronizationBarrier
DC_ON EQU ( 0x1:SHL:2 )
@@ -136,4 +139,19 @@ ArmDisableBranchPrediction
mcr p15, 0, r0, c1, c0, 0
bx LR
ASM_PFX(ArmDataMemoryBarrier):
mov R0, #0
mcr P15, #0, R0, C7, C10, #5
bx LR
ASM_PFX(ArmDataSyncronizationBarrier):
mov R0, #0
mcr P15, #0, R0, C7, C10, #4
bx LR
ASM_PFX(ArmInstructionSynchronizationBarrier):
MOV R0, #0
MCR P15, #0, R0, C7, C5, #4
bx LR
END

View File

@@ -116,3 +116,30 @@ ArmConfigureMmu (
ArmEnableDataCache();
ArmEnableMmu();
}
VOID
EFIAPI
ArmDataMemoryBarrier (
VOID
)
{
}
VOID
EFIAPI
ArmDataSyncronizationBarrier (
VOID
)
{
}
VOID
EFIAPI
ArmInstructionSynchronizationBarrier (
VOID
)
{
}

View File

@@ -34,6 +34,10 @@
.globl ASM_PFX(ArmEnableBranchPrediction)
.globl ASM_PFX(ArmDisableBranchPrediction)
.globl ASM_PFX(ArmV7AllDataCachesOperation)
.globl ASM_PFX(ArmDataMemoryBarrier)
.globl ASM_PFX(ArmDataSyncronizationBarrier)
.globl ASM_PFX(ArmInstructionSynchronizationBarrier)
.set DC_ON, (0x1<<2)
.set IC_ON, (0x1<<12)
@@ -222,5 +226,17 @@ L_Finished:
ldmfd SP!, {r4-r12, lr}
bx LR
ASM_PFX(ArmDataMemoryBarrier):
dmb
bx LR
ASM_PFX(ArmDataSyncronizationBarrier):
dsb
bx LR
ASM_PFX(ArmInstructionSynchronizationBarrier):
isb
bx LR
ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@@ -30,6 +30,10 @@
EXPORT ArmEnableBranchPrediction
EXPORT ArmDisableBranchPrediction
EXPORT ArmV7AllDataCachesOperation
EXPORT ArmDataMemoryBarrier
EXPORT ArmDataSyncronizationBarrier
EXPORT ArmInstructionSynchronizationBarrier
DC_ON EQU ( 0x1:SHL:2 )
IC_ON EQU ( 0x1:SHL:12 )
@@ -217,4 +221,17 @@ Finished
LDMFD SP!, {r4-r12, lr}
BX LR
ArmDataMemoryBarrier
DMB
BX LR
ArmDataSyncronizationBarrier
DSB
BX LR
ArmInstructionSynchronizationBarrier
ISB
BX LR
END