diff --git a/VersionASM b/VersionASM
index c5ffa9ec7e3cb8061d5fee1f5908609f5161a546..ea46ccbe875928ccc05c7efbe291d67a975ca3ca 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.98.2.4"
-Module_Date             SETS    "24 Apr 2009"
-Module_ApplicationDate  SETS    "24-Apr-09"
+Module_MinorVersion     SETS    "4.79.2.98.2.5"
+Module_Date             SETS    "10 May 2009"
+Module_ApplicationDate  SETS    "10-May-09"
 Module_ComponentName    SETS    "Kernel"
 Module_ComponentPath    SETS    "castle/RiscOS/Sources/Kernel"
-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"
+Module_FullVersion      SETS    "5.35 (4.79.2.98.2.5)"
+Module_HelpVersion      SETS    "5.35 (10 May 2009) 4.79.2.98.2.5"
                         END
diff --git a/VersionNum b/VersionNum
index 202dee4d572fb429455617b874c5a8d153c75135..d67f35992b2a1e180025535fc578866c3431af95 100644
--- a/VersionNum
+++ b/VersionNum
@@ -5,19 +5,19 @@
  *
  */
 #define Module_MajorVersion_CMHG        5.35
-#define Module_MinorVersion_CMHG        4.79.2.98.2.4
-#define Module_Date_CMHG                24 Apr 2009
+#define Module_MinorVersion_CMHG        4.79.2.98.2.5
+#define Module_Date_CMHG                10 May 2009
 
 #define Module_MajorVersion             "5.35"
 #define Module_Version                  535
-#define Module_MinorVersion             "4.79.2.98.2.4"
-#define Module_Date                     "24 Apr 2009"
+#define Module_MinorVersion             "4.79.2.98.2.5"
+#define Module_Date                     "10 May 2009"
 
-#define Module_ApplicationDate          "24-Apr-09"
+#define Module_ApplicationDate          "10-May-09"
 
 #define Module_ComponentName            "Kernel"
 #define Module_ComponentPath            "castle/RiscOS/Sources/Kernel"
 
-#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_FullVersion              "5.35 (4.79.2.98.2.5)"
+#define Module_HelpVersion              "5.35 (10 May 2009) 4.79.2.98.2.5"
 #define Module_LibraryVersionInfo       "5:35"
diff --git a/s/AMBControl/memmap b/s/AMBControl/memmap
index 92b609ae769153078d9f1fd83cf9fc3378b2e58e..3a256d25b58ba88ff40699174ae1e413b7223ea7 100644
--- a/s/AMBControl/memmap
+++ b/s/AMBControl/memmap
@@ -107,8 +107,15 @@ AMB_LazyFixUp ROUT
         ADD     r1,r1,#AMBNode_pages
         ADD     r1,r1,r0,LSL #2                          ;r1 -> page involved, in node page list
         LDR     r2,AMBPhysBin
+
+; Calculate the L2PT protection bits in a nice way that won't produce broken code if we change MMU model
+   [ MEMM_Type = "VMSAv6"
+        MOV     r3,#(AP_Full*L2X_APMult)+L2_ExtPage+L2_C+L2_B
+   |
+        ASSERT  (AP_Full*L2X_APMult)+L2_ExtPage+L2_C+L2_B = &FFE
         MOV     r3,#&FF0
-        ORR     r3,r3,#&E                                ;&FFE = L2PT protection bits for ordinary page
+        ORR     r3,r3,#&E
+   ]
         LDR     r4,[r1]
         MOV     r6,r4
         PageNumToL2PT r4,r2,r3,r5
diff --git a/s/ARMops b/s/ARMops
index 95b5224bf6f8dccbaeb8f19cc6bf9eec4ff3e800..5d84755d6c4be0b47d50a9405a41c3a95efd365e 100644
--- a/s/ARMops
+++ b/s/ARMops
@@ -2055,7 +2055,8 @@ IMB_Full_WB_CR7_Lx ROUT
 IMB_Range_WB_CR7_Lx ROUT
         SUB     a2, a2, a1
         CMP     a2, #32*1024 ; Maximum L1 cache size on Cortex-A8 is 32K, use that to guess what approach to take
-        BGE     IMB_Full_WB_CR7_Lx
+        ADD     a2, a2, a1
+        BHS     IMB_Full_WB_CR7_Lx
         Push    "a3,lr"
         MOV     lr, #0
         LDRB    lr, [lr, #DCache_LineLen] ; log2(line len)-2
diff --git a/s/HAL b/s/HAL
index bd8addf1a4f23c27e0e21a303d4399fb27a21a65..6e31e6048aaf73df8b68cf34be227030e3b3771a 100644
--- a/s/HAL
+++ b/s/HAL
@@ -37,7 +37,7 @@ mmuc_table ; Table of MMUC init values. First word is value to ORR, second is va
  DCD MMUC_F+MMUC_L+MMUC_D+MMUC_P, MMUC_B+MMUC_W+MMUC_C+MMUC_A+MMUC_M+MMUC_RR+MMUC_V+MMUC_I+MMUC_Z+MMUC_R+MMUC_S ; ARMv5T
  DCD MMUC_F+MMUC_L+MMUC_D+MMUC_P, MMUC_B+MMUC_W+MMUC_C+MMUC_A+MMUC_M+MMUC_RR+MMUC_V+MMUC_I+MMUC_Z+MMUC_R+MMUC_S ; ARMv5TE
  DCD MMUC_F+MMUC_L+MMUC_D+MMUC_P, MMUC_B+MMUC_W+MMUC_C+MMUC_A+MMUC_M+MMUC_RR+MMUC_V+MMUC_I+MMUC_Z+MMUC_R+MMUC_S ; ARMv5TEJ
- DCD MMUC_F+MMUC_L+MMUC_D+MMUC_P, MMUC_B+MMUC_W+MMUC_C+MMUC_A+MMUC_M+MMUC_RR+MMUC_V+MMUC_I+MMUC_Z+MMUC_R+MMUC_S+MMUC_VE+MMUC_EE+MMUC_L2 ; ARMv6
+ DCD MMUC_F+MMUC_L+MMUC_D+MMUC_P+MMUC_U, MMUC_B+MMUC_W+MMUC_C+MMUC_A+MMUC_M+MMUC_RR+MMUC_V+MMUC_I+MMUC_Z+MMUC_R+MMUC_S+MMUC_VE+MMUC_EE+MMUC_L2 ; ARMv6
  ; Skip undefined architecture numbers
 mmuc_table_armvf
  DCD 0, MMUC_C+MMUC_A+MMUC_M+MMUC_V+MMUC_I+MMUC_Z+MMUC_RR+MMUC_TRE+MMUC_AFE+MMUC_TE ; ARMvF (Cortex)
diff --git a/s/vdu/vdugrafj b/s/vdu/vdugrafj
index dfac8679c12ec90ce9e6c6abd8bbdaeeda85b638..b8a15b955cd35c2917040aadd765f713f234cd0a 100644
--- a/s/vdu/vdugrafj
+++ b/s/vdu/vdugrafj
@@ -159,7 +159,11 @@ GetSpr05
       ]
         BEQ     %BT75                   ; then error
 
-        ADR     R14, %FT95 + SVC_mode
+ [ No26bitCode
+        ADR     R14, %FT95
+ |
+        ADR     R14, %FT95+SVC_mode ; Enable interrupts on return from PostCreateHeader
+ ]
         Push    "R1, R14"
         ADD     R8, WsPtr, #NameBuf
         LDMIA   R8, {R9-R11}            ; load 3 words of name
@@ -204,6 +208,10 @@ GetSpr05
 ; R1 -> sprite area, R2 -> sprite, R3 = no. of words to extend by
 
 95
+ [ No26bitCode
+; Enable interrupts here for 32bit machines
+        WritePSRc SVC_mode, R14
+ ]
         BL      GetSpriteData
         BL      SelectSprite