From d6ece89ef4453481551c83d4a96bc79575bbf130 Mon Sep 17 00:00:00 2001 From: Kevin Bracey <kbracey@gitlab.riscosopen.org> Date: Fri, 7 May 1999 12:30:42 +0000 Subject: [PATCH] Added OS_Module 21 (find end of ROM module chain). Version 4.79. Tagged as 'Kernel-4_79' --- VersionASM | 8 ++++---- VersionNum | 14 +++++++------- hdr/ModHand | 2 ++ s/ModHand | 28 ++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/VersionASM b/VersionASM index 4d125dad..4182f3c4 100644 --- a/VersionASM +++ b/VersionASM @@ -6,9 +6,9 @@ GBLS Module_MinorVersion GBLS Module_Date GBLS Module_FullVersion -Module_MajorVersion SETS "4.78" -Module_Version SETA 478 +Module_MajorVersion SETS "4.79" +Module_Version SETA 479 Module_MinorVersion SETS "" -Module_Date SETS "06 May 1999" -Module_FullVersion SETS "4.78" +Module_Date SETS "07 May 1999" +Module_FullVersion SETS "4.79" END diff --git a/VersionNum b/VersionNum index c3c02445..b4e55de9 100644 --- a/VersionNum +++ b/VersionNum @@ -1,15 +1,15 @@ -/* (4.78) +/* (4.79) * * This file is automatically maintained by srccommit, do not edit manually. * */ -#define Module_MajorVersion_CMHG 4.78 +#define Module_MajorVersion_CMHG 4.79 #define Module_MinorVersion_CMHG -#define Module_Date_CMHG 06 May 1999 +#define Module_Date_CMHG 07 May 1999 -#define Module_MajorVersion "4.78" -#define Module_Version 478 +#define Module_MajorVersion "4.79" +#define Module_Version 479 #define Module_MinorVersion "" -#define Module_Date "06 May 1999" +#define Module_Date "07 May 1999" -#define Module_FullVersion "4.78" +#define Module_FullVersion "4.79" diff --git a/hdr/ModHand b/hdr/ModHand index 841754e8..79cf00fa 100644 --- a/hdr/ModHand +++ b/hdr/ModHand @@ -39,6 +39,7 @@ OldOpt SETA {OPT} ; 29-Jul-87 APT LookupName ; 17-Aug-87 APT EnumerateROM_Modules ; 23-Jan-91 TMD EnumerateROM_ModulesWithInfo +; 07-May-99 KJB FindEndOfROM_ModuleChain ModHandReason_Run * 0 ModHandReason_Load * 1 @@ -61,6 +62,7 @@ ModHandReason_AddPoduleModule * 17 ModHandReason_LookupName * 18 ModHandReason_EnumerateROM_Modules * 19 ModHandReason_EnumerateROM_ModulesWithInfo * 20 +ModHandReason_FindEndOfROM_ModuleChain * 21 ; Real module offsets diff --git a/s/ModHand b/s/ModHand index f5917fff..f6cd122e 100644 --- a/s/ModHand +++ b/s/ModHand @@ -547,6 +547,7 @@ ModuleHandler ROUT ModuleDispatchEntry LookupName ModuleDispatchEntry EnumerateROM_Modules ModuleDispatchEntry EnumerateROM_ModulesWithInfo + ModuleDispatchEntry FindEndOfROM_ModuleChain NaffSWI ; Set V and return ADR R0, ErrorBlock_BadModuleReason @@ -1598,6 +1599,33 @@ Module_EnumerateROM_ModulesWithInfo ROUT Pull "r8, r9, lr" ; restore registers ExitSWIHandler ; and exit +;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; FindEndOfROM_ModuleChain +; +; In : R1 = -1 => ROM +; = other => reserved +; +; Out: R1 = preserved +; R2 -> first word after ROM module chain + +Module_FindEndOfROM_ModuleChain ROUT + CMP r1, #-1 ; Only works for the system ROM at present + ADRNEL r0, ErrorBlock_BadParameters + [ International + Push "lr",NE + BLNE TranslateError + Pull "lr",EQ + ] + BNE SLVK_SetV + + ADRL r2, SysModules_Info + 4 ; Step through until the end of the module chain +10 LDR r11, [r2, #-4] + TEQ r11, #0 + ADDNE r2, r2, r11 + BNE %BT10 + + ExitSWIHandler ; and exit + ;************************************************************* ; Support routines. ; -- GitLab