]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/ArmLib: remove unused ArmCleanDataCacheToPoU()
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 9 Nov 2015 13:26:11 +0000 (13:26 +0000)
committerabiesheuvel <abiesheuvel@Edk2>
Mon, 9 Nov 2015 13:26:11 +0000 (13:26 +0000)
The function ArmCleanDataCacheToPoU() has no users, and its purpose
is unclear, since it uses cache maintenance by set/way to perform
the clean to PoU, which is a dubious practice to begin with. So
remove the declaration and all definitions.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18752 6f19259b-4bc3-4df7-8a09-765794883524

ArmPkg/Include/Library/ArmLib.h
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.c
ArmPkg/Library/ArmLib/AArch64/AArch64Lib.h
ArmPkg/Library/ArmLib/AArch64/AArch64Support.S
ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.c
ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h
ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S
ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm

index 58116663b28d8d9202af7c8a483cfae1b2d4a31b..f1de303d952d2cce528b79b5bafc310b6bc4de15 100644 (file)
@@ -241,12 +241,6 @@ ArmCleanDataCache (
   VOID\r
   );\r
 \r
-VOID\r
-EFIAPI\r
-ArmCleanDataCacheToPoU (\r
-  VOID\r
-  );\r
-\r
 VOID\r
 EFIAPI\r
 ArmInvalidateInstructionCache (\r
index a4e1f20ad910a8703daea7da7289b786ceee720c..f795a2f896b2e16f92dc616059082a648ebf7e00 100644 (file)
@@ -206,26 +206,6 @@ AArch64DataCacheOperation (
   }\r
 }\r
 \r
-\r
-VOID\r
-AArch64PoUDataCacheOperation (\r
-  IN  AARCH64_CACHE_OPERATION  DataCacheOperation\r
-  )\r
-{\r
-  UINTN     SavedInterruptState;\r
-\r
-  SavedInterruptState = ArmGetInterruptState ();\r
-  ArmDisableInterrupts ();\r
-\r
-  AArch64PerformPoUDataCacheOperation (DataCacheOperation);\r
-\r
-  ArmDrainWriteBuffer ();\r
-\r
-  if (SavedInterruptState) {\r
-    ArmEnableInterrupts ();\r
-  }\r
-}\r
-\r
 VOID\r
 EFIAPI\r
 ArmInvalidateDataCache (\r
@@ -255,13 +235,3 @@ ArmCleanDataCache (
   ArmDrainWriteBuffer ();\r
   AArch64DataCacheOperation (ArmCleanDataCacheEntryBySetWay);\r
 }\r
-\r
-VOID\r
-EFIAPI\r
-ArmCleanDataCacheToPoU (\r
-  VOID\r
-  )\r
-{\r
-  ArmDrainWriteBuffer ();\r
-  AArch64PoUDataCacheOperation (ArmCleanDataCacheEntryBySetWay);\r
-}\r
index c8bb84365bb6ac32e3ef5f861fb6d470bc43d29b..7b9b9c3715314795872bc77b5b9bd3f76b76b528 100644 (file)
 \r
 typedef VOID (*AARCH64_CACHE_OPERATION)(UINTN);\r
 \r
-\r
-VOID\r
-AArch64PerformPoUDataCacheOperation (\r
-  IN  AARCH64_CACHE_OPERATION  DataCacheOperation\r
-  );\r
-\r
 VOID\r
 AArch64AllDataCachesOperation (\r
   IN  AARCH64_CACHE_OPERATION  DataCacheOperation\r
index 8b5e0fb6e7fe7d86ebcb9834e2bae4da24adc194..f973a35c21d6a67a72fb0ce2451005c1a06b7a4a 100644 (file)
@@ -40,7 +40,6 @@ GCC_ASM_EXPORT (ArmEnableAlignmentCheck)
 GCC_ASM_EXPORT (ArmEnableBranchPrediction)\r
 GCC_ASM_EXPORT (ArmDisableBranchPrediction)\r
 GCC_ASM_EXPORT (AArch64AllDataCachesOperation)\r
-GCC_ASM_EXPORT (AArch64PerformPoUDataCacheOperation)\r
 GCC_ASM_EXPORT (ArmDataMemoryBarrier)\r
 GCC_ASM_EXPORT (ArmDataSynchronizationBarrier)\r
 GCC_ASM_EXPORT (ArmInstructionSynchronizationBarrier)\r
@@ -324,19 +323,6 @@ ASM_PFX(AArch64AllDataCachesOperation):
                                 // right to ease the access to CSSELR and the Set/Way operation.\r
   cbz   x3, L_Finished          // No need to clean if LoC is 0\r
   mov   x10, #0                 // Start clean at cache level 0\r
-  b     Loop1\r
-\r
-ASM_PFX(AArch64PerformPoUDataCacheOperation):\r
-// We can use regs 0-7 and 9-15 without having to save/restore.\r
-// Save our link register on the stack. - The stack must always be quad-word aligned\r
-  str   x30, [sp, #-16]!\r
-  mov   x1, x0                  // Save Function call in x1\r
-  mrs   x6, clidr_el1           // Read EL1 CLIDR\r
-  and   x3, x6, #0x38000000     // Mask out all but Point of Unification (PoU)\r
-  lsr   x3, x3, #26             // Left align cache level value - the level is shifted by 1 to the\r
-                                // right to ease the access to CSSELR and the Set/Way operation.\r
-  cbz   x3, L_Finished          // No need to clean if LoC is 0\r
-  mov   x10, #0                 // Start clean at cache level 0\r
 \r
 Loop1:\r
   add   x2, x10, x10, lsr #1    // Work out 3x cachelevel for cache info\r
index feb60881bdcd401d4a78c32c245f481b2be69912..6a8f0d3fdd984b8a8fd5e1cb0ab219ed81d60546 100644 (file)
@@ -208,26 +208,6 @@ ArmV7DataCacheOperation (
   }\r
 }\r
 \r
-\r
-VOID\r
-ArmV7PoUDataCacheOperation (\r
-  IN  ARM_V7_CACHE_OPERATION  DataCacheOperation\r
-  )\r
-{\r
-  UINTN     SavedInterruptState;\r
-\r
-  SavedInterruptState = ArmGetInterruptState ();\r
-  ArmDisableInterrupts ();\r
-\r
-  ArmV7PerformPoUDataCacheOperation (DataCacheOperation);\r
-\r
-  ArmDrainWriteBuffer ();\r
-\r
-  if (SavedInterruptState) {\r
-    ArmEnableInterrupts ();\r
-  }\r
-}\r
-\r
 VOID\r
 EFIAPI\r
 ArmInvalidateDataCache (\r
@@ -257,13 +237,3 @@ ArmCleanDataCache (
   ArmDrainWriteBuffer ();\r
   ArmV7DataCacheOperation (ArmCleanDataCacheEntryBySetWay);\r
 }\r
-\r
-VOID\r
-EFIAPI\r
-ArmCleanDataCacheToPoU (\r
-  VOID\r
-  )\r
-{\r
-  ArmDrainWriteBuffer ();\r
-  ArmV7PoUDataCacheOperation (ArmCleanDataCacheEntryBySetWay);\r
-}\r
index 1398d75071ca67700c7c5b635b1c96b6ccc0185c..50fba38240247566e28e4b7240114dd9abc29cfe 100644 (file)
 \r
 typedef VOID (*ARM_V7_CACHE_OPERATION)(UINT32);\r
 \r
-\r
-VOID\r
-ArmV7PerformPoUDataCacheOperation (\r
-  IN  ARM_V7_CACHE_OPERATION  DataCacheOperation\r
-  );\r
-\r
 VOID\r
 ArmV7AllDataCachesOperation (\r
   IN  ARM_V7_CACHE_OPERATION  DataCacheOperation\r
index f59cd5f32e6b2ef2d51f4be5e0f1da981f56035a..fdc4d03776c8af17f74532b4e1331d5fd59588dc 100644 (file)
@@ -38,7 +38,6 @@ GCC_ASM_EXPORT (ArmDisableBranchPrediction)
 GCC_ASM_EXPORT (ArmSetLowVectors)\r
 GCC_ASM_EXPORT (ArmSetHighVectors)\r
 GCC_ASM_EXPORT (ArmV7AllDataCachesOperation)\r
-GCC_ASM_EXPORT (ArmV7PerformPoUDataCacheOperation)\r
 GCC_ASM_EXPORT (ArmDataMemoryBarrier)\r
 GCC_ASM_EXPORT (ArmDataSynchronizationBarrier)\r
 GCC_ASM_EXPORT (ArmInstructionSynchronizationBarrier)\r
@@ -268,55 +267,6 @@ L_Finished:
   ldmfd SP!, {r4-r12, lr}\r
   bx    LR\r
 \r
-ASM_PFX(ArmV7PerformPoUDataCacheOperation):\r
-  stmfd SP!,{r4-r12, LR}\r
-  mov   R1, R0                @ Save Function call in R1\r
-  mrc   p15, 1, R6, c0, c0, 1 @ Read CLIDR\r
-  ands  R3, R6, #0x38000000    @ Mask out all but Level of Unification (LoU)\r
-  mov   R3, R3, LSR #26       @ Cache level value (naturally aligned)\r
-  beq   Finished2\r
-  mov   R10, #0\r
-\r
-Loop4:\r
-  add   R2, R10, R10, LSR #1    @ Work out 3xcachelevel\r
-  mov   R12, R6, LSR R2         @ bottom 3 bits are the Cache type for this level\r
-  and   R12, R12, #7            @ get those 3 bits alone\r
-  cmp   R12, #2\r
-  blt   Skip2                   @ no cache or only instruction cache at this level\r
-  mcr   p15, 2, R10, c0, c0, 0  @ write the Cache Size selection register (CSSELR) // OR in 1 for Instruction\r
-  isb                           @ isb to sync the change to the CacheSizeID reg\r
-  mrc   p15, 1, R12, c0, c0, 0  @ reads current Cache Size ID register (CCSIDR)\r
-  and   R2, R12, #0x7            @ extract the line length field\r
-  add   R2, R2, #4              @ add 4 for the line length offset (log2 16 bytes)\r
-  ldr   R4, =0x3FF\r
-  ands  R4, R4, R12, LSR #3     @ R4 is the max number on the way size (right aligned)\r
-  clz   R5, R4                  @ R5 is the bit position of the way size increment\r
-  ldr   R7, =0x00007FFF\r
-  ands  R7, R7, R12, LSR #13    @ R7 is the max number of the index size (right aligned)\r
-\r
-Loop5:\r
-  mov   R9, R4                  @ R9 working copy of the max way size (right aligned)\r
-\r
-Loop6:\r
-  orr   R0, R10, R9, LSL R5     @ factor in the way number and cache number into R11\r
-  orr   R0, R0, R7, LSL R2      @ factor in the index number\r
-\r
-  blx   R1\r
-\r
-  subs  R9, R9, #1              @ decrement the way number\r
-  bge   Loop6\r
-  subs  R7, R7, #1              @ decrement the index\r
-  bge   Loop5\r
-Skip2:\r
-  add   R10, R10, #2            @ increment the cache number\r
-  cmp   R3, R10\r
-  bgt   Loop4\r
-\r
-Finished2:\r
-  dsb\r
-  ldmfd SP!, {r4-r12, lr}\r
-  bx    LR\r
-\r
 ASM_PFX(ArmDataMemoryBarrier):\r
   dmb\r
   bx      LR\r
index 07ff1ae15a6a3a4121ef9f210b05d8e09f9b04f2..f16dd4a4ab01897e737747dafb4f0bffd222a163 100644 (file)
@@ -35,7 +35,6 @@
     EXPORT  ArmSetLowVectors\r
     EXPORT  ArmSetHighVectors\r
     EXPORT  ArmV7AllDataCachesOperation\r
-    EXPORT  ArmV7PerformPoUDataCacheOperation\r
     EXPORT  ArmDataMemoryBarrier\r
     EXPORT  ArmDataSynchronizationBarrier\r
     EXPORT  ArmInstructionSynchronizationBarrier\r
@@ -262,55 +261,6 @@ Finished
   ldmfd SP!, {r4-r12, lr}\r
   bx    LR\r
 \r
-ArmV7PerformPoUDataCacheOperation\r
-  stmfd SP!,{r4-r12, LR}\r
-  mov   R1, R0                ; Save Function call in R1\r
-  mrc   p15, 1, R6, c0, c0, 1 ; Read CLIDR\r
-  ands  R3, R6, #&38000000    ; Mask out all but Level of Unification (LoU)\r
-  mov   R3, R3, LSR #26       ; Cache level value (naturally aligned)\r
-  beq   Finished2\r
-  mov   R10, #0\r
-\r
-Loop4\r
-  add   R2, R10, R10, LSR #1    ; Work out 3xcachelevel\r
-  mov   R12, R6, LSR R2         ; bottom 3 bits are the Cache type for this level\r
-  and   R12, R12, #7            ; get those 3 bits alone\r
-  cmp   R12, #2\r
-  blt   Skip2                   ; no cache or only instruction cache at this level\r
-  mcr   p15, 2, R10, c0, c0, 0  ; write the Cache Size selection register (CSSELR) // OR in 1 for Instruction\r
-  isb                           ; isb to sync the change to the CacheSizeID reg\r
-  mrc   p15, 1, R12, c0, c0, 0  ; reads current Cache Size ID register (CCSIDR)\r
-  and   R2, R12, #&7            ; extract the line length field\r
-  add   R2, R2, #4              ; add 4 for the line length offset (log2 16 bytes)\r
-  ldr   R4, =0x3FF\r
-  ands  R4, R4, R12, LSR #3     ; R4 is the max number on the way size (right aligned)\r
-  clz   R5, R4                  ; R5 is the bit position of the way size increment\r
-  ldr   R7, =0x00007FFF\r
-  ands  R7, R7, R12, LSR #13    ; R7 is the max number of the index size (right aligned)\r
-\r
-Loop5\r
-  mov   R9, R4                  ; R9 working copy of the max way size (right aligned)\r
-\r
-Loop6\r
-  orr   R0, R10, R9, LSL R5     ; factor in the way number and cache number into R11\r
-  orr   R0, R0, R7, LSL R2      ; factor in the index number\r
-\r
-  blx   R1\r
-\r
-  subs  R9, R9, #1              ; decrement the way number\r
-  bge   Loop6\r
-  subs  R7, R7, #1              ; decrement the index\r
-  bge   Loop5\r
-Skip2\r
-  add   R10, R10, #2            ; increment the cache number\r
-  cmp   R3, R10\r
-  bgt   Loop4\r
-\r
-Finished2\r
-  dsb\r
-  ldmfd SP!, {r4-r12, lr}\r
-  bx    LR\r
-\r
 ArmDataMemoryBarrier\r
   dmb\r
   bx      LR\r