Commits (4)
  • Jeffrey Lee's avatar
    Avoid unnecessary remainder calculations · d183fb9c
    Jeffrey Lee authored
    Detail:
      s/CtrlUtils, s/OSGBPB - Avoid unnecessary remainder calculations in DivRem macro
    Admin:
      Tested on Cortex-A15
    
    
    Version 2.84. Tagged as 'FileSwitch-2_84'
    d183fb9c
  • Robert Sprowson's avatar
    A few extra fsfunc symbols · 1985952b
    Robert Sprowson authored
    Add fsfunc_Opt subreasons, fsfunc_DirIs subreasons.
    Expand tabs on fsargs_IOCtl.
    No code change, retagged as FileSwitch-2_84.
    1985952b
  • ROOL's avatar
    Fix to OS_FSControl 13 when no territory is loaded · 40b6e210
    ROOL authored
    Detail:
      PRM2-97 describes filing system name matching as case insensitive. However, the Internat_LowerCase macro is a no-op when there's no case conversion table, such as prior to the territory loading.
      Change FindFSName to use an case insensitive ASCII match until the territory starts.
      Fixes a problem with EtherUSB failing to start because it was using Devices: (rather than devices:). A global search of the sources shows SerMouse and the Kernel would also be affected.
    Admin:
      Submission from Colin Granville.
    
    Version 2.85. Tagged as 'FileSwitch-2_85'
    40b6e210
  • Jeffrey Lee's avatar
    Eliminate global OS_SynchroniseCodeAreas · a16d5301
    Jeffrey Lee authored
    Detail:
      s/FSControl - Change the post-Service_UKCompression call to OS_SynchroniseCodeAreas to be a ranged up rather than a global one.
    Admin:
      Tested on iMx6
      Improves performance with SMP ROMs, where global D-cache clean isn't really possible
    
    
    Version 2.86. Tagged as 'FileSwitch-2_86'
    a16d5301
...@@ -11,13 +11,13 @@ ...@@ -11,13 +11,13 @@
GBLS Module_HelpVersion GBLS Module_HelpVersion
GBLS Module_ComponentName GBLS Module_ComponentName
GBLS Module_ComponentPath GBLS Module_ComponentPath
Module_MajorVersion SETS "2.83" Module_MajorVersion SETS "2.86"
Module_Version SETA 283 Module_Version SETA 286
Module_MinorVersion SETS "" Module_MinorVersion SETS ""
Module_Date SETS "11 Nov 2014" Module_Date SETS "03 Sep 2017"
Module_ApplicationDate SETS "11-Nov-14" Module_ApplicationDate SETS "03-Sep-17"
Module_ComponentName SETS "FileSwitch" Module_ComponentName SETS "FileSwitch"
Module_ComponentPath SETS "castle/RiscOS/Sources/FileSys/FileSwitch" Module_ComponentPath SETS "castle/RiscOS/Sources/FileSys/FileSwitch"
Module_FullVersion SETS "2.83" Module_FullVersion SETS "2.86"
Module_HelpVersion SETS "2.83 (11 Nov 2014)" Module_HelpVersion SETS "2.86 (03 Sep 2017)"
END END
/* (2.83) /* (2.86)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1. * Last processed by srccommit version: 1.1.
* *
*/ */
#define Module_MajorVersion_CMHG 2.83 #define Module_MajorVersion_CMHG 2.86
#define Module_MinorVersion_CMHG #define Module_MinorVersion_CMHG
#define Module_Date_CMHG 11 Nov 2014 #define Module_Date_CMHG 03 Sep 2017
#define Module_MajorVersion "2.83" #define Module_MajorVersion "2.86"
#define Module_Version 283 #define Module_Version 286
#define Module_MinorVersion "" #define Module_MinorVersion ""
#define Module_Date "11 Nov 2014" #define Module_Date "03 Sep 2017"
#define Module_ApplicationDate "11-Nov-14" #define Module_ApplicationDate "03-Sep-17"
#define Module_ComponentName "FileSwitch" #define Module_ComponentName "FileSwitch"
#define Module_ComponentPath "castle/RiscOS/Sources/FileSys/FileSwitch" #define Module_ComponentPath "castle/RiscOS/Sources/FileSys/FileSwitch"
#define Module_FullVersion "2.83" #define Module_FullVersion "2.86"
#define Module_HelpVersion "2.83 (11 Nov 2014)" #define Module_HelpVersion "2.86 (03 Sep 2017)"
#define Module_LibraryVersionInfo "2:83" #define Module_LibraryVersionInfo "2:86"
...@@ -154,7 +154,7 @@ fsinfo_notforMultiFS * :NOT: fsinfo_flushnotify ; Anything other than fl ...@@ -154,7 +154,7 @@ fsinfo_notforMultiFS * :NOT: fsinfo_flushnotify ; Anything other than fl
fsextra_dirinformation * 1 :SHL: 0 ; filing system supports fsfunc_DirIs fsextra_dirinformation * 1 :SHL: 0 ; filing system supports fsfunc_DirIs
fsextra_FSDoesCat * 1 :SHL: 1 ; filing system does Cat rather than FileSwitch fsextra_FSDoesCat * 1 :SHL: 1 ; filing system does Cat rather than FileSwitch
fsextra_FSDoesEx * 1 :SHL: 2 ; filing system does Ex rather than FileSwitch fsextra_FSDoesEx * 1 :SHL: 2 ; filing system does Ex rather than FileSwitch
fsextra_IOCtl * 1 :SHL: 3 ; filing system does IOCtls fsextra_IOCtl * 1 :SHL: 3 ; filing system does IOCtls
; bits 4-31 unused (yet) ; bits 4-31 unused (yet)
; Offsets from start of IFS information block in a IFS (MultiFS) module ; Offsets from start of IFS information block in a IFS (MultiFS) module
...@@ -171,6 +171,7 @@ IFS_file # 4 ...@@ -171,6 +171,7 @@ IFS_file # 4
IFS_func # 4 IFS_func # 4
IFS_size * @-IFS_info IFS_size * @-IFS_info
; Reason codes passed to fscb^.File ; Reason codes passed to fscb^.File
fsfile_Load * &FF fsfile_Load * &FF
...@@ -219,7 +220,8 @@ fsargs_EnsureSize # 1 ; ARGS 6 7 All fs ...@@ -219,7 +220,8 @@ fsargs_EnsureSize # 1 ; ARGS 6 7 All fs
fsargs_WriteZeroes # 1 ; internal 8 Only buffered fs fsargs_WriteZeroes # 1 ; internal 8 Only buffered fs
fsargs_ReadLoadExec # 1 ; internal 9 All fs fsargs_ReadLoadExec # 1 ; internal 9 All fs
fsargs_ImageStampIs # 1 ; ARGS 8 10 Only fsargs_ImageStampIs # 1 ; ARGS 8 10 Only
fsargs_IOCtl # 1 ; ARGS 9 11 fsargs_IOCtl # 1 ; ARGS 9 11
; Reason codes passed to fscb^.Func ; Reason codes passed to fscb^.Func
...@@ -232,6 +234,8 @@ fsfunc_LCat # 1 ;4 FSC 7 ...@@ -232,6 +234,8 @@ fsfunc_LCat # 1 ;4 FSC 7
fsfunc_LEx # 1 ;5 FSC 8 fsfunc_LEx # 1 ;5 FSC 8
fsfunc_Info # 1 ;6 FSC 9 fsfunc_Info # 1 ;6 FSC 9
fsfunc_Opt # 1 ;7 FSC 10 fsfunc_Opt # 1 ;7 FSC 10
fsfunc_Opt_Default * 0
fsfunc_Opt_Boot * 4
fsfunc_Rename # 1 ;8 FSC 25 fsfunc_Rename # 1 ;8 FSC 25
fsfunc_Access # 1 ;9 FSC 24 fsfunc_Access # 1 ;9 FSC 24
fsfunc_Bootup # 1 ;10 FSC 15 fsfunc_Bootup # 1 ;10 FSC 15
...@@ -259,6 +263,10 @@ fsfunc_NameDisc # 1 ;31 for naming a disc ...@@ -259,6 +263,10 @@ fsfunc_NameDisc # 1 ;31 for naming a disc
fsfunc_StampImage # 1 ;32 for image stamping control fsfunc_StampImage # 1 ;32 for image stamping control
fsfunc_ObjectAtOffset # 1 ;33 fsfunc_ObjectAtOffset # 1 ;33
fsfunc_DirIs # 1 ;34 for NetFS (and others if they want) fsfunc_DirIs # 1 ;34 for NetFS (and others if they want)
fsfunc_DirIs_CSD * 0
fsfunc_DirIs_PSD * 1
fsfunc_DirIs_URD * 2
fsfunc_DirIs_Lib * 3
fsfunc_ReadFreeSpace64 # 1 ;35 for reading the free space in 64 bit (FSC 55) fsfunc_ReadFreeSpace64 # 1 ;35 for reading the free space in 64 bit (FSC 55)
fsfunc_DefectList64 # 1 ;36 for obtaining the image's defect list (two words per defect) fsfunc_DefectList64 # 1 ;36 for obtaining the image's defect list (two words per defect)
fsfunc_AddDefect64 # 1 ;37 for adding a defect expressed in two words fsfunc_AddDefect64 # 1 ;37 for adding a defect expressed in two words
......
...@@ -757,7 +757,7 @@ int_CatExBody Entry "r0-r9", CatExBody_FrameSize ...@@ -757,7 +757,7 @@ int_CatExBody Entry "r0-r9", CatExBody_FrameSize
ADD r6, r7, r8 ADD r6, r7, r8
ADD r6, r6, r0 ADD r6, r6, r0
SUB r6, r6, #1 SUB r6, r6, #1
DivRem r5, r6, r0, r14 DivRem r5, r6, r0, r14, norem
MUL r6, r0, r5 MUL r6, r0, r5
SUB r6, r6, r7 SUB r6, r6, r7
......
...@@ -405,8 +405,11 @@ Run_UndatedFile ...@@ -405,8 +405,11 @@ Run_UndatedFile
;unsqueezer or patcher(s) are responsible for any code synchronising which ;unsqueezer or patcher(s) are responsible for any code synchronising which
;is neccessary for internal code/poking handling, but we do a Synchronise here ;is neccessary for internal code/poking handling, but we do a Synchronise here
;to sync with the finally unsqueezed and patched up code ;to sync with the finally unsqueezed and patched up code
MOV r0, #0 MOV r0, #1
MOV r1, #&8000
ADD r2, r3, #&8000 ; Trust that they've given the right size back
SWI XOS_SynchroniseCodeAreas SWI XOS_SynchroniseCodeAreas
MOV r2, #&8000
] ]
BL CheckAIFMemoryLimit BL CheckAIFMemoryLimit
......
...@@ -590,7 +590,7 @@ FindFSName Entry "r0,r2,r3,r5" ...@@ -590,7 +590,7 @@ FindFSName Entry "r0,r2,r3,r5"
; Don't even try to match against image filing systems ; Don't even try to match against image filing systems
LDRB r14, [fscb, #fscb_info] LDRB r14, [fscb, #fscb_info]
TEQ r14, #0 TEQ r14, #0
BEQ %FT25 BEQ %FT35
MOV r2, r1 ; r2 -> Filing System name to test MOV r2, r1 ; r2 -> Filing System name to test
ADD r5, fscb, #fscb_name ; r5 -> fscb name field ADD r5, fscb, #fscb_name ; r5 -> fscb name field
...@@ -607,12 +607,20 @@ FindFSName Entry "r0,r2,r3,r5" ...@@ -607,12 +607,20 @@ FindFSName Entry "r0,r2,r3,r5"
20 20
Internat_CaseConvertLoad r14,Lower Internat_CaseConvertLoad r14,Lower
TEQ r14, #Nowt
BEQ %FT25 ; No territory loaded, no case
; conversion table. Use ASCII.
Internat_LowerCase r0, r14 Internat_LowerCase r0, r14
Internat_LowerCase r3, r14 Internat_LowerCase r3, r14
B %FT30
25
ASCII_LowerCase r0, r14
ASCII_LowerCase r3, r14
30
TEQ r0, r3 ; Loop if still matching TEQ r0, r3 ; Loop if still matching
BEQ %BT15 BEQ %BT15
25 35
LDR fscb, [fscb, #fscb_link] ; Try next fscb then LDR fscb, [fscb, #fscb_link] ; Try next fscb then
B %BT10 B %BT10
......
...@@ -1238,7 +1238,7 @@ Daft_ReadDirEntries Entry "r0-r10" ; FSFunc only preserves r6 up ...@@ -1238,7 +1238,7 @@ Daft_ReadDirEntries Entry "r0-r10" ; FSFunc only preserves r6 up
ADD r0, r5, r4 ; B+g ADD r0, r5, r4 ; B+g
ADD r9, r3, r4 ; g+m ADD r9, r3, r4 ; g+m
DivRem r8, r0, r9, r14 ; (B+g)/(g+m) (note we *DO* want the round-down here) DivRem r8, r0, r9, r14, norem ; (B+g)/(g+m) (note we *DO* want the round-down here)
MUL r8, r4, r8 ; (B+g)/(g+m) * g MUL r8, r4, r8 ; (B+g)/(g+m) * g
ADD r2, r2, r8 ; Adjust buffer start ADD r2, r2, r8 ; Adjust buffer start
SUB r5, r5, r8 ; Adjust buffer length SUB r5, r5, r8 ; Adjust buffer length
...@@ -1257,7 +1257,7 @@ Daft_ReadDirEntries Entry "r0-r10" ; FSFunc only preserves r6 up ...@@ -1257,7 +1257,7 @@ Daft_ReadDirEntries Entry "r0-r10" ; FSFunc only preserves r6 up
ADD r0, r5, #2 ; B+g-1 ADD r0, r5, #2 ; B+g-1
ADD r9, r3, #3 ; g+m ADD r9, r3, #3 ; g+m
DivRem r8, r0, r9, r14 ; (B+g-1)/(B+m) DivRem r8, r0, r9, r14, norem ; (B+g-1)/(B+m)
ADD r8, r8, r8, ASL #1 ; (B+g-1)/(B+m) * g ADD r8, r8, r8, ASL #1 ; (B+g-1)/(B+m) * g
SUB r5, r5, r8 ; Adjust buffer size only SUB r5, r5, r8 ; Adjust buffer size only
......