Commit d28235ea authored by Jeffrey Lee's avatar Jeffrey Lee
Browse files

Fix kernel cache clean/invalidate operations for Cortex CPUs

Detail:
  s/ARMops - Fix set/way-based cache ops for cache type WB_CR7_Lx to iterate sets/ways/cache levels properly
  s/HAL - Fix HAL_InvalidateCache_ARMvF to iterate sets/ways/cache levels properly
Admin:
  Tested on rev C2 beagleboard


Version 5.35, 4.79.2.98.2.4. Tagged as 'Kernel-5_35-4_79_2_98_2_4'
parent 3d1317e7
......@@ -13,11 +13,11 @@
GBLS Module_ComponentPath
Module_MajorVersion SETS "5.35"
Module_Version SETA 535
Module_MinorVersion SETS "4.79.2.98.2.3"
Module_Date SETS "06 Mar 2009"
Module_ApplicationDate SETS "06-Mar-09"
Module_MinorVersion SETS "4.79.2.98.2.4"
Module_Date SETS "24 Apr 2009"
Module_ApplicationDate SETS "24-Apr-09"
Module_ComponentName SETS "Kernel"
Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel"
Module_FullVersion SETS "5.35 (4.79.2.98.2.3)"
Module_HelpVersion SETS "5.35 (06 Mar 2009) 4.79.2.98.2.3"
Module_FullVersion SETS "5.35 (4.79.2.98.2.4)"
Module_HelpVersion SETS "5.35 (24 Apr 2009) 4.79.2.98.2.4"
END
......@@ -5,19 +5,19 @@
*
*/
#define Module_MajorVersion_CMHG 5.35
#define Module_MinorVersion_CMHG 4.79.2.98.2.3
#define Module_Date_CMHG 06 Mar 2009
#define Module_MinorVersion_CMHG 4.79.2.98.2.4
#define Module_Date_CMHG 24 Apr 2009
#define Module_MajorVersion "5.35"
#define Module_Version 535
#define Module_MinorVersion "4.79.2.98.2.3"
#define Module_Date "06 Mar 2009"
#define Module_MinorVersion "4.79.2.98.2.4"
#define Module_Date "24 Apr 2009"
#define Module_ApplicationDate "06-Mar-09"
#define Module_ApplicationDate "24-Apr-09"
#define Module_ComponentName "Kernel"
#define Module_ComponentPath "castle/RiscOS/Sources/Kernel"
#define Module_FullVersion "5.35 (4.79.2.98.2.3)"
#define Module_HelpVersion "5.35 (06 Mar 2009) 4.79.2.98.2.3"
#define Module_FullVersion "5.35 (4.79.2.98.2.4)"
#define Module_HelpVersion "5.35 (24 Apr 2009) 4.79.2.98.2.4"
#define Module_LibraryVersionInfo "5:35"
......@@ -1852,13 +1852,13 @@ Cache_CleanAll_WB_CR7_Lx ROUT
AND v1, a3, #&7 ; log2(Line size)-2
BIC a3, a3, #&F0000007 ; Clear flags & line size
MOV v2, a3, LSL #19 ; Number of ways-1 in upper 10 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in upper 15 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in lower 15 bits
; Way number needs to be packed right up at the high end of the data word; shift it up
CLZ a4, v2
MOV v2, v2, LSL a4
; Set number needs to start at log2(Line size)
MOV v3, v3, LSR #15 ; Start at bit 2
MOV v3, v3, LSL v1 ; Start at log2(Line size)
; Set number needs to start at log2(Line size)+2
MOV v3, v3, LSL #4 ; Start at bit 4
MOV v3, v3, LSL v1 ; Start at log2(Line size)+2
; Now calculate the offset numbers we will use to increment sets & ways
BIC v4, v2, v2, LSL #1 ; Way increment
BIC v5, v3, v3, LSL #1 ; Set increment
......@@ -1898,13 +1898,13 @@ Cache_CleanInvalidateAll_WB_CR7_Lx ROUT
AND v1, a3, #&7 ; log2(Line size)-2
BIC a3, a3, #&F0000007 ; Clear flags & line size
MOV v2, a3, LSL #19 ; Number of ways-1 in upper 10 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in upper 15 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in lower 15 bits
; Way number needs to be packed right up at the high end of the data word; shift it up
CLZ a4, v2
MOV v2, v2, LSL a4
; Set number needs to start at log2(Line size)
MOV v3, v3, LSR #15 ; Start at bit 2
MOV v3, v3, LSL v1 ; Start at log2(Line size)
; Set number needs to start at log2(Line size)+2
MOV v3, v3, LSL #4 ; Start at bit 4
MOV v3, v3, LSL v1 ; Start at log2(Line size)+2
; Now calculate the offset numbers we will use to increment sets & ways
BIC v4, v2, v2, LSL #1 ; Way increment
BIC v5, v3, v3, LSL #1 ; Set increment
......@@ -1945,13 +1945,13 @@ Cache_InvalidateAll_WB_CR7_Lx ROUT
AND v1, a3, #&7 ; log2(Line size)-2
BIC a3, a3, #&F0000007 ; Clear flags & line size
MOV v2, a3, LSL #19 ; Number of ways-1 in upper 10 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in upper 15 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in lower 15 bits
; Way number needs to be packed right up at the high end of the data word; shift it up
CLZ a4, v2
MOV v2, v2, LSL a4
; Set number needs to start at log2(Line size)
MOV v3, v3, LSR #15 ; Start at bit 2
MOV v3, v3, LSL v1 ; Start at log2(Line size)
; Set number needs to start at log2(Line size)+2
MOV v3, v3, LSL #4 ; Start at bit 4
MOV v3, v3, LSL v1 ; Start at log2(Line size)+2
; Now calculate the offset numbers we will use to increment sets & ways
BIC v4, v2, v2, LSL #1 ; Way increment
BIC v5, v3, v3, LSL #1 ; Set increment
......@@ -2020,13 +2020,13 @@ IMB_Full_WB_CR7_Lx ROUT
AND v1, a3, #&7 ; log2(Line size)-2
BIC a3, a3, #&F0000007 ; Clear flags & line size
MOV v2, a3, LSL #19 ; Number of ways-1 in upper 10 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in upper 15 bits
MOV v3, a3, LSR #13 ; Number of sets-1 in lower 15 bits
; Way number needs to be packed right up at the high end of the data word; shift it up
CLZ a4, v2
MOV v2, v2, LSL a4
; Set number needs to start at log2(Line size)
MOV v3, v3, LSR #15 ; Start at bit 2
MOV v3, v3, LSL v1 ; Start at log2(Line size)
; Set number needs to start at log2(Line size)+2
MOV v3, v3, LSL #4 ; Start at bit 4
MOV v3, v3, LSL v1 ; Start at log2(Line size)+2
; Now calculate the offset numbers we will use to increment sets & ways
BIC v4, v2, v2, LSL #1 ; Way increment
BIC v5, v3, v3, LSL #1 ; Set increment
......
......@@ -1040,13 +1040,13 @@ HAL_InvalidateCache_ARMvF
AND r11, r10, #&7 ; log2(Line size)-2
BIC r10, r10, #&F0000007 ; Clear flags & line size
MOV r12, r10, LSL #19 ; Number of ways-1 in upper 10 bits
MOV r10, r10, LSR #13 ; Number of sets-1 in upper 15 bits
MOV r10, r10, LSR #13 ; Number of sets-1 in lower 15 bits
; Way number needs to be packed right up at the high end of the data word; shift it up
CLZ r14, r12
MOV r12, r12, LSL r14
; Set number needs to start at log2(Line size)
MOV r10, r10, LSR #15 ; Start at bit 2
MOV r10, r10, LSL r11 ; Start at log2(Line size)
; Set number needs to start at log2(Line size)+2
MOV r10, r10, LSL #4 ; Start at bit 4
MOV r10, r10, LSL r11 ; Start at log2(Line size)+2
; Now calculate the offset numbers we will use to increment sets & ways
BIC r12, r12, r12, LSL #1 ; Way increment
BIC r11, r10, r10, LSL #1 ; Set increment
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment