diff --git a/Resources/UK/Messages b/Resources/UK/Messages index 4aab4765a3ffae97ef681ed3ff91bd492fcc98ff..859543a125b6be72695b506974d36e08ddfe6134 100644 --- a/Resources/UK/Messages +++ b/Resources/UK/Messages @@ -77,6 +77,7 @@ ChunkNotRM:Podule chunk is not a relocatable module ModulePostfix:'%%' in module title NotMod:This is not a relocatable module BadRMHeaderField:Illegal header field in module +RMNot32bit:Module is not 32-bit compatible IncarnationNotFound:Incarnation not found RMNotFoundInROM:Module is not in ROM NumbTooBig:Number too big diff --git a/Resources/UK/Morris4/Messages b/Resources/UK/Morris4/Messages index d02f3ef1026d22c6eab9976cd98dc4d598069dd7..4f2c2cebb6e74765d75a7e97525f14e2b38fc79e 100644 --- a/Resources/UK/Morris4/Messages +++ b/Resources/UK/Morris4/Messages @@ -77,6 +77,7 @@ ChunkNotRM:Podule chunk is not a relocatable module ModulePostfix:'%%' in module title NotMod:This is not a relocatable module BadRMHeaderField:Illegal header field in module +RMNot32bit:Module is not 32-bit compatible IncarnationNotFound:Incarnation not found RMNotFoundInROM:Module is not in ROM NumbTooBig:Number too big diff --git a/Resources/UK/Omega/Messages b/Resources/UK/Omega/Messages index 7cc1e3cc6c62d64c2ab625fca9bf825175b17793..626f4c86a384651e0c7b7c25aaaef6fd9cc3b97a 100644 --- a/Resources/UK/Omega/Messages +++ b/Resources/UK/Omega/Messages @@ -77,6 +77,7 @@ ChunkNotRM:Podule chunk is not a relocatable module ModulePostfix:'%%' in module title NotMod:This is not a relocatable module BadRMHeaderField:Illegal header field in module +RMNot32bit:Module is not 32-bit compatible IncarnationNotFound:Incarnation not found RMNotFoundInROM:Module is not in ROM NumbTooBig:Number too big diff --git a/Resources/UK/Ursula/Messages b/Resources/UK/Ursula/Messages index d02f3ef1026d22c6eab9976cd98dc4d598069dd7..4f2c2cebb6e74765d75a7e97525f14e2b38fc79e 100644 --- a/Resources/UK/Ursula/Messages +++ b/Resources/UK/Ursula/Messages @@ -77,6 +77,7 @@ ChunkNotRM:Podule chunk is not a relocatable module ModulePostfix:'%%' in module title NotMod:This is not a relocatable module BadRMHeaderField:Illegal header field in module +RMNot32bit:Module is not 32-bit compatible IncarnationNotFound:Incarnation not found RMNotFoundInROM:Module is not in ROM NumbTooBig:Number too big diff --git a/VersionASM b/VersionASM index c3964bf945b04eb3e0606c442708a2b46cb9d3b9..2757380ea4343f564f6f0b587db3e424e0372485 100644 --- a/VersionASM +++ b/VersionASM @@ -9,12 +9,16 @@ GBLS Module_ApplicationDate2 GBLS Module_ApplicationDate4 GBLS Module_HelpVersion -Module_MajorVersion SETS "5.37" -Module_Version SETA 537 + GBLS Module_ComponentName + GBLS Module_ComponentPath +Module_MajorVersion SETS "5.38" +Module_Version SETA 538 Module_MinorVersion SETS "" -Module_Date SETS "17 Oct 2000" -Module_ApplicationDate2 SETS "17-Oct-00" -Module_ApplicationDate4 SETS "17-Oct-2000" -Module_FullVersion SETS "5.37" -Module_HelpVersion SETS "5.37 (17 Oct 2000)" +Module_Date SETS "21 Nov 2000" +Module_ApplicationDate2 SETS "21-Nov-00" +Module_ApplicationDate4 SETS "21-Nov-2000" +Module_ComponentName SETS "Kernel" +Module_ComponentPath SETS "RiscOS/Sources/Kernel" +Module_FullVersion SETS "5.38" +Module_HelpVersion SETS "5.38 (21 Nov 2000)" END diff --git a/VersionNum b/VersionNum index 59111012eb06ba632b112909524c7d15768dd5ca..87d7c2414794968b201087db38c170d29314ce33 100644 --- a/VersionNum +++ b/VersionNum @@ -1,19 +1,22 @@ -/* (5.37) +/* (5.38) * * This file is automatically maintained by srccommit, do not edit manually. * */ -#define Module_MajorVersion_CMHG 5.37 +#define Module_MajorVersion_CMHG 5.38 #define Module_MinorVersion_CMHG -#define Module_Date_CMHG 17 Oct 2000 +#define Module_Date_CMHG 21 Nov 2000 -#define Module_MajorVersion "5.37" -#define Module_Version 537 +#define Module_MajorVersion "5.38" +#define Module_Version 538 #define Module_MinorVersion "" -#define Module_Date "17 Oct 2000" +#define Module_Date "21 Nov 2000" -#define Module_ApplicationDate2 "17-Oct-00" -#define Module_ApplicationDate4 "17-Oct-2000" +#define Module_ApplicationDate2 "21-Nov-00" +#define Module_ApplicationDate4 "21-Nov-2000" -#define Module_FullVersion "5.37" -#define Module_HelpVersion "5.37 (17 Oct 2000)" +#define Module_ComponentName "Kernel" +#define Module_ComponentPath "RiscOS/Sources/Kernel" + +#define Module_FullVersion "5.38" +#define Module_HelpVersion "5.38 (21 Nov 2000)" diff --git a/s/ModHand b/s/ModHand index db467f348ad7fbb73aaa3b5a95c2accec296b95e..7aafb82d7637cd1acf20a7993330fa9a615488d5 100644 --- a/s/ModHand +++ b/s/ModHand @@ -2127,7 +2127,8 @@ CallInit ROUT ; " size in R2 CheckHeader ROUT - Push "R3, lr" + Push "R0, R3, lr" + ADR R0, ErrorBlock_BadRMHeaderField LDR R3, [R1, #Module_HC_Table] BL %FT11 LDR R3, [R1, #Module_HelpStr] @@ -2142,25 +2143,42 @@ CheckHeader ROUT LDR R3, [R1, #Module_Init] TST R3, #&80000000 BLEQ %FT10 ; only check init offset if an unsqueezed module + [ No26bitCode ; insist that modules declare themselves 32-bit safe + ADR R0, ErrorBlock_RMNot32bit + LDR R3, [R1, #Module_SWIChunk] + BIC R3, R3, #Auto_Error_SWI_bit + TST R3, #Module_SWIChunkSize-1 + TSTEQ R3, #&FF000000 + BNE %FT99 ; naff SWI chunk number + TEQ R3, #0 + LDRNE R3, [R1, #Module_SWIEntry] ; check for SWI entry point like CheckForSWIEntries + BLNE %FT10 + LDR R3, [R1, #Module_MsgFile] ; Other places appear to require this to be word-aligned + BL %FT10 + CMP R3, R2 + LDRLO R3, [R1, #Module_FlagTable] + BL %FT10 + LDR R3, [R1, R3] ; Retrieve first word of module flags + TST R3, #ModuleFlag_32bit ; NE if 32-bit compatible + BEQ %FT99 + ] CLRV - Pull "R3, PC" + Pull "R0, R3, PC" 10 TST R3, #3 BNE %FT99 11 CMP R3, R2 MOVLO PC, lr 99 - Pull "R3, lr" - ADR R0, ErrorBlock_BadRMHeaderField + LDMIB SP!, {R3, LR} ; NOTE: sp still points at stacked LR! [ International - Push "lr" BL TranslateError - Pull "lr" | SETV ] - MOV PC, lr + Pull "PC" MakeErrorBlock BadRMHeaderField + MakeErrorBlock RMNot32bit ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; Enter with module node pointer in R9 diff --git a/s/MsgCode b/s/MsgCode index 0e14087c10312676a63b6167003867446adc4ff6..695592e937d676d6f5006fca8cdd5864596274c2 100644 --- a/s/MsgCode +++ b/s/MsgCode @@ -109,6 +109,7 @@ TranslateError_UseR4 ; This block MUST not be empty CommonErrorAddresses [ countmsgusage + & ErrorBlock_RMNot32bit & ErrorBlock_RCExc & ErrorBlock_RCNegative & ErrorBlock_BadString