diff --git a/VersionASM b/VersionASM index 1762f4e61032e5aaa26eceef1360fb46e6d9ee3a..0a58d719a38b39944cd52e678d72af5704904752 100644 --- a/VersionASM +++ b/VersionASM @@ -13,11 +13,11 @@ GBLS Module_ComponentPath Module_MajorVersion SETS "5.35" Module_Version SETA 535 -Module_MinorVersion SETS "4.79.2.147.2.1" -Module_Date SETS "10 May 2012" -Module_ApplicationDate SETS "10-May-12" +Module_MinorVersion SETS "4.79.2.147.2.2" +Module_Date SETS "14 May 2012" +Module_ApplicationDate SETS "14-May-12" Module_ComponentName SETS "Kernel" Module_ComponentPath SETS "castle/RiscOS/Sources/Kernel" -Module_FullVersion SETS "5.35 (4.79.2.147.2.1)" -Module_HelpVersion SETS "5.35 (10 May 2012) 4.79.2.147.2.1" +Module_FullVersion SETS "5.35 (4.79.2.147.2.2)" +Module_HelpVersion SETS "5.35 (14 May 2012) 4.79.2.147.2.2" END diff --git a/VersionNum b/VersionNum index 2f601e486b4bbfe7f794f30203318817b14f4b79..564e8a7484ac77b13257cc24afc476f084523660 100644 --- a/VersionNum +++ b/VersionNum @@ -5,19 +5,19 @@ * */ #define Module_MajorVersion_CMHG 5.35 -#define Module_MinorVersion_CMHG 4.79.2.147.2.1 -#define Module_Date_CMHG 10 May 2012 +#define Module_MinorVersion_CMHG 4.79.2.147.2.2 +#define Module_Date_CMHG 14 May 2012 #define Module_MajorVersion "5.35" #define Module_Version 535 -#define Module_MinorVersion "4.79.2.147.2.1" -#define Module_Date "10 May 2012" +#define Module_MinorVersion "4.79.2.147.2.2" +#define Module_Date "14 May 2012" -#define Module_ApplicationDate "10-May-12" +#define Module_ApplicationDate "14-May-12" #define Module_ComponentName "Kernel" #define Module_ComponentPath "castle/RiscOS/Sources/Kernel" -#define Module_FullVersion "5.35 (4.79.2.147.2.1)" -#define Module_HelpVersion "5.35 (10 May 2012) 4.79.2.147.2.1" +#define Module_FullVersion "5.35 (4.79.2.147.2.2)" +#define Module_HelpVersion "5.35 (14 May 2012) 4.79.2.147.2.2" #define Module_LibraryVersionInfo "5:35" diff --git a/s/ARMops b/s/ARMops index b13c9297fcf19b219b0635822c82ea8188526af3..17786062dc47caff6c7ec8b7ec8376728d1bf528 100644 --- a/s/ARMops +++ b/s/ARMops @@ -221,12 +221,6 @@ FindARMloop ; others ... WeirdARMPanic - ! 0, "FIXME: temporary code" -;!!! - MOV ip,#&C0 - STR a1,[ip,#&40] - STMIA ip,{a1-ip} - B WeirdARMPanic ; stiff :) Analyse_ARMv3 @@ -572,10 +566,6 @@ Analyse_WB_CR7_Lx CMP a3, #14 ; Stop after level 7 (even though an 8th level might exist on some CPUs?) ADD a2, a2, #4 BLT %BT10 - ! 0, "FIXME: temporary code" -;!!! - MOV a4,#32 - MOV v2,#32 STRB a4, [v6, #ICache_LineLen] ; Store log2(line size)-2 STRB v2, [v6, #DCache_LineLen] ; log2(line size)-2 @@ -760,9 +750,9 @@ KnownCPUTable ; Simplified CPUDesc table for ARMvF ; The cache size data is ignored for ARMv7. KnownCPUTable_Fancy - CPUDesc Cortex_A8, &00C080, &00FFF0, ARMvF, WB_CR7_Lx, 1, 16K, 32, 16, 16K, 32, 16 - CPUDesc Cortex_A9, &00C090, &00FFF0, ARMvF, WB_CR7_Lx, 1, 32K, 32, 16, 32K, 32, 16 - CPUDesc ARM1176JZF_S, &00B760, &00FFF0, ARMv6, WB_CR7_LDa, 1, 16K, 32, 16,16K, 32, 16 + CPUDesc ARM1176JZF_S, &00B760, &00FFF0, ARMvF, WB_CR7_LDc, 1, 16K, 4, 8, 16K, 4, 8 + CPUDesc Cortex_A8, &00C080, &00FFF0, ARMvF, WB_CR7_Lx, 1, 16K, 32,16, 16K, 32,16 + CPUDesc Cortex_A9, &00C090, &00FFF0, ARMvF, WB_CR7_Lx, 1, 32K, 32,16, 32K, 32,16 DCD -1 ; Peculiar characteristics of individual ARMs not deducable otherwise. First field is @@ -840,20 +830,21 @@ ARM_Analyse_Fancy BNE %FT25 ; ARMv6 format cache type register. - ; TODO - Use the cache type register to deduce the cache info. - ; For now, just fall back on the values in the CPU table. - ASSERT CT_Isize_pos = 0 - MOV a1, v2 + ; CPUs like the ARM1176JZF-S are available with a range of cache sizes, + ; so it's not safe to rely on the values in the CPU table. Fortunately + ; all ARMv6 CPUs implement the register (by contrast, for the "plain" + ; ARM case, no ARMv3 CPUs, some ARMv4 CPUs and all ARMv5 CPUs, so it + ; needs to drop back to the table in some cases). + ARM_read_cachetype v2 + MOV a1, v2, LSR #CT_Isize_pos ADD a2, v6, #ICache_Info BL EvaluateCache MOV a1, v2, LSR #CT_Dsize_pos ADD a2, v6, #DCache_Info BL EvaluateCache -;EvaluateCache isn't doing our job for us....assuming these flags are true! ;) - ! 0, "FIXME: temporary code" -;!!! - ORR v5, v5, #CPUFlag_SynchroniseCodeAreas+CPUFlag_SplitCache + TST v2, #CT_S + ORRNE v5, v5, #CPUFlag_SynchroniseCodeAreas+CPUFlag_SplitCache B %FT27 @@ -933,17 +924,18 @@ ARM_Analyse_Fancy TSTEQ v5, #CPUFlag_SplitCache BEQ Analyse_WriteThroughUnified ; eg. ARM7TDMI derivative - TEQ a2, #CT_ctype_WB_CR7_LDa - BEQ Analyse_WB_CR7_LDa ; eg. ARM9 + TEQ a2, #CT_ctype_WB_CR7_LDa ; eg. ARM9 + TEQNE a2, #CT_ctype_WB_CR7_LDc ; eg. ARM1176JZF-S - differs only in cache lockdown + BEQ Analyse_WB_CR7_LDa TEQ a2, #CT_ctype_WB_Crd BEQ Analyse_WB_Crd ; eg. StrongARM - TEQ a2, #CT_ctype_WB_Cal_LD + TEQ a2, #CT_ctype_WB_Cal_LD ; warning, allocation clash with CT_ctype_WB_CR7_LDd BEQ Analyse_WB_Cal_LD ; assume XScale TEQ a2, #CT_ctype_WB_CR7_Lx - BEQ Analyse_WB_CR7_Lx + BEQ Analyse_WB_CR7_Lx ; eg. Cortex-A8, Cortex-A9 ; others ...