Commit 9664c93b authored by Ben Avison's avatar Ben Avison
Browse files

Commit of kernel as featured in release 5.00.

Detail:
  Lots of changes since last version, at least the following:
  * Updated OS timestamp, removed alpha status
  * Negative INKEY OS version changed to &AA
  * GraphicsV is now alocated vector number &2A
  * ROM moved up to &FC000000
  * Max application slot increased to 512 Mbytes (for now)
  * Max size of RMA increased to 256 Mbytes
  * RMA is now first-created dynamic area (so it gets lowest address after
    top of application slot)
  * OS_Memory 10 reimplemeted
  * New OS_ReadSysInfo 6 values 18-22 added
  * OS_ReadSysInfo 8 gains flag bit to indicate soft power-off
  * Misc internal top-bit-set-address fixes
  * *ChangeDynamicArea can take sizes in megabytes or gigabytes
  * Magic word "&off" in R0 passed to OS_Reset powers down if possible
  * Added acceleration: block copy; CLS; text window scroll up; rectangle
    fill
  * Disabled LED flashing in page mode (liable to crash)
  * Masked sprite plot and VDU 5 text avoids reading the screen if possible
  * Framestore made USR mode accessible
  * Fix for VDU 5,127 bug - now relies on font definitions being in extreme
    quarters of memory, rather than bottom half
  * Allocated 64-bit OS_Convert... SWIs
  * IIC errors use allocated error numbers
  * Looks for Dallas RTC before Philips RTC because we're using a Philips
    NVRAM device with the same ID
  * Fix to bug that meant the oscillator in the Dallas RTC wasn't enabled
  * Default mouse type (USB) changed to allocated number
  * Ram disc max size increased to 128 Mbytes (Ursula merge) and made
    cacheable for StrongARMs (not XScale)
  * Branch through zero handler now works in USR mode, by use of a
    trampoline in the system stack to allow PC-relative register storage
  * Address exception handler changed to not use 0 as workspace
  * OS_Memory 13 extended to allow specification of cacheability and access
    privileges
  * Added OS_Memory 16 to return important memory addresses
  * RISCOS_MapInIO() takes cacheable flag in bit 3, access permissions in
    bits 10 and 11, doubly-mapped flag in bit 20, and access permissions
    specified flag in bit 21
  * Bug fix in last version for application abort handlers didn't quite
    work; register shuffle required
  * "Module is not 32-bit compatible" error now reports the module name
  * Default configured language changed from 10 to 11 (now Desktop again)

Version 5.35, 4.79.2.51. Tagged as 'Kernel-5_35-4_79_2_51'
parent 982426fe
......@@ -14,6 +14,18 @@ the top bits of addresses are liable to fail. This document summarises
API changes to cover this.
General notes
-------------
A number of APIs, particularly in the Window Manager, allow registers or
other values to be a either be a pointer or <= 0. These APIs are being
changed to only accept -1 or 0 as a non-pointer value.
Also, some APIs are documented as only accepting 0 as a non-pointer value,
such as the scaling factors in OS_SpriteOp 52, but actually treat any
negative value as a non-pointer; these are being tightened up to match
the documentation.
OS_ReadLine
-----------
In existing OSes, R0 is interpreted as a 26-bit address, with 6 flag bits, 4
......@@ -49,8 +61,9 @@ handler:
Because of the way ReadLineV operates, any OS_ReadLine32 SWI on a 26-bit
OS will return an error if R0 > 64MB.
When using either SWI, applications for existing 26-bit OSes should ensure that the buffer
is in a low address - eg allocated in the RMA or application space.
When using either SWI, applications for existing 26-bit OSes should ensure
that the buffer is in a low address - eg allocated in the RMA or application
space.
OS_SubstituteArgs
......
......@@ -30,7 +30,7 @@ Update pointer
Set DAG
R4 = 6
R0 = DAG
R0 = DAG (0 = display init, 1 = base, 2 = limit, 3 = vdu init)
R1 = physical address
Vet mode (reserved)
......@@ -76,4 +76,36 @@ Read palette entry
R2 = palette index
Out:
R1 = palette updated
\ No newline at end of file
Render
R4 = 13
R0 = flags
bit 0 = synchronise
bit 1 = synchronise if unclaimed
R1 = operation
R2 -> parameter block
Render calls:
R1 = 0 NOP
no parameters (R2 undefined) - NOP
R1 = 1 Copy rectangle
R2+0 = source left
R2+4 = source bottom
R2+8 = dest left
R2+12 = dest bottom
R2+16 = width-1
R2+20 = height-1
R1 = 2 Fill rectangle
R2+0 = left
R2+4 = top
R2+8 = right
R2+12 = bottom
R2+16 -> OraEor block (on a 64-byte boundary)
......@@ -446,6 +446,14 @@ routines (rather than the early bootstrap code in the HAL) can be done.
????
-- HAL_Reset
This resets the board depending on the value in a1
a1 = 0 hard reset and turn the power off (ie.just turn the power off)
a1 = 1 hard reset and leave the power on
a1 > 1 reserved
Asking HAL_PlatformInfo will tell you if the hardware allows the power to be turned off by software,if it doesn't then behaviour is per a1 = 1
-- int HAL_Timers(void)
Returns number of timers. Timers are numbered from 0 upwards. Timer 0 must
......
No preview for this file type
......@@ -77,7 +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
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
......@@ -176,3 +176,4 @@ SA1110:SA-1110 Processor
920T:ARM 920T Processor
922T:ARM 922T Processor
X80200:80200 Processor
X80321:80321 Processor
......@@ -77,7 +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
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
......
......@@ -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 '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
......
......@@ -77,7 +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
RMNot32bit:Module '%0' is not 32-bit compatible
IncarnationNotFound:Incarnation not found
RMNotFoundInROM:Module is not in ROM
NumbTooBig:Number too big
......
......@@ -7,7 +7,7 @@
GBLS Date
GBLA OSVersionID
OSVersionID SETA &A9
OSVersionID SETA &AA
[ STB
Version SETA Module_Version
......@@ -15,8 +15,8 @@ VString SETS Module_MajorVersion
Date SETS Module_Date ; version for STB/NC OS
|
Version SETA 500
VString SETS "5.00 alpha"
Date SETS "03 Oct 2002" ; version for RISC OS on desktop computers
VString SETS "5.00"
Date SETS "28 Nov 2002" ; version for RISC OS on desktop computers
]
END
......@@ -13,11 +13,11 @@
GBLS Module_ComponentPath
Module_MajorVersion SETS "5.35"
Module_Version SETA 535
Module_MinorVersion SETS "4.79.2.50"
Module_Date SETS "28 Oct 2002"
Module_ApplicationDate SETS "28-Oct-02"
Module_MinorVersion SETS "4.79.2.51"
Module_Date SETS "30 Nov 2002"
Module_ApplicationDate SETS "30-Nov-02"
Module_ComponentName SETS "Kernel"
Module_ComponentPath SETS "RiscOS/Sources/Kernel"
Module_FullVersion SETS "5.35 (4.79.2.50)"
Module_HelpVersion SETS "5.35 (28 Oct 2002) 4.79.2.50"
Module_FullVersion SETS "5.35 (4.79.2.51)"
Module_HelpVersion SETS "5.35 (30 Nov 2002) 4.79.2.51"
END
......@@ -5,19 +5,19 @@
*
*/
#define Module_MajorVersion_CMHG 5.35
#define Module_MinorVersion_CMHG 4.79.2.50
#define Module_Date_CMHG 28 Oct 2002
#define Module_MinorVersion_CMHG 4.79.2.51
#define Module_Date_CMHG 30 Nov 2002
#define Module_MajorVersion "5.35"
#define Module_Version 535
#define Module_MinorVersion "4.79.2.50"
#define Module_Date "28 Oct 2002"
#define Module_MinorVersion "4.79.2.51"
#define Module_Date "30 Nov 2002"
#define Module_ApplicationDate "28-Oct-02"
#define Module_ApplicationDate "30-Nov-02"
#define Module_ComponentName "Kernel"
#define Module_ComponentPath "RiscOS/Sources/Kernel"
#define Module_FullVersion "5.35 (4.79.2.50)"
#define Module_HelpVersion "5.35 (28 Oct 2002) 4.79.2.50"
#define Module_FullVersion "5.35 (4.79.2.51)"
#define Module_HelpVersion "5.35 (30 Nov 2002) 4.79.2.51"
#define Module_LibraryVersionInfo "5:35"
......@@ -133,7 +133,7 @@ EntryNo_HAL_PCIWriteConfigByte # 1
EntryNo_HAL_PCIWriteConfigHalfword # 1
EntryNo_HAL_PCIWriteConfigWord # 1
EntryNo_HAL_PCISpecialCycle # 1
EntryNo_HAL_PCISlotNumber # 1
EntryNo_HAL_PCISlotTable # 1
EntryNo_HAL_PCIAddresses # 1
EntryNo_HAL_ATAControllerInfo # 1
......
......@@ -242,20 +242,21 @@ UNDStackSize * 8*1024
KbuffsMaxSize * 64*1024
DCacheCleanSize * 256*1024 ;should be multiple of 64k
AplWorkMaxSize * &01C00000 ; 28M - temporary (need to decide this at boot time)
AplWorkMaxSize * &20000000 ; 512M - temporary (need to decide this at boot time)
;ScreenEndAdr * &24000000 ; temporary - run time allocate
FreePoolAddress * &28000000 ; ditto
RMAAddress * &02100000 ; temporary - run time allocate
RMAAddress * AplWorkMaxSize ; temporary - run time allocate?
ScreenMaxSize * 480*1024
RMAMaxSize * &01700000 ; temporary - should be max
RMAMaxSize * &10000000 ; 256M
FreePoolAddress * RMAAddress + RMAMaxSize
IOLimit * &BA000000 ; initial lower limit on room for IO space (DA creation may move limit up)
IO * &FA000000 ; works downwards
HALWorkspace * &FA000000
HALWorkspaceSpace * &00100000
IRQStackAddress * &FA100000
[ {FALSE}
[ {TRUE}
SVCStackAddress * &FA200000
|
SVCStackAddress * &01C00000
......@@ -265,14 +266,14 @@ UNDStackAddress * &FA400000
PhysicalAccess * &FAE00000
DCacheCleanAddress * &FAF00000 ; eg. for StrongARM, 256k of space, up to FAF40000
KbuffsBaseAddress * &FAF40000 ; kernel buffers for long command lines, size KbuffsMaxSize
[ {FALSE}
[ {TRUE}
CursorChunkAddress * &FAFF0000
|
CursorChunkAddress * &01F00000
]
L2PT * &FB000000
L1PT * &FB400000
[ {FALSE}
[ {TRUE}
SysHeapChunkAddress * &FB404000
SysHeapAddress * SysHeapChunkAddress
SysHeapMaxSize * &FB800000 - SysHeapAddress
......@@ -282,6 +283,7 @@ SysHeapAddress * SysHeapChunkAddress
SysHeapMaxSize * &001F8000
]
CAM * &FB800000
CAMspace * 8*1024*1024 ; enough for 4GB of RAM
IRQSTK * IRQStackAddress + IRQStackSize
ABTSTK * ABTStackAddress + ABTStackSize
......@@ -1082,6 +1084,16 @@ SyncCodeA_sema # 1 ; re-entrancy semaphore for SynchroniseCodeAreas
! 0, "SyncCodeA_sema (byte) at ":CC::STR:(SyncCodeA_sema)
]
]
; [ this was used on Phoebe as described below, now only used for Wimp free pool lock ]
; word controlling rescue of VRAM that is not used by screen (and sorting into bottom of free pool) - VRAM is slower than SDRAM for Phoebe.
; word organised as 3 fields - control field (byte) is not written by interrupt routine, so can be safely manipulated by foreground with IRQs enabled
VRAMRescue_control # 1 ; control bits manipulated by foreground, read by interrupt driven rescuer
; Bit fields of VRAMRescue_control (VRRc_...) defined as follows:
;
VRRc_disable * &01 ; control bit 0 slow page rescue from Free Pool disabled completely, if set (disabled for no VRAM)
VRRc_suspend * &02 ; control bit 1 slow page rescue suspended by outside agent, if set
VRRc_wimp_lock * &04 ; control bit 2 slow page rescue suspended because Wimp_ClaimFreeMemory has claimed free pool, if set
; control bits 3..7 reserved (should be 0)
AlignSpace 4
Oscli_CmdHashSum # 4 ;for hashed command lookup
......@@ -1133,6 +1145,7 @@ DRAMPhysTableSize * (PhysRamTableEnd-DRAMPhysAddrA) / 8
[ HAL
VRAMFlags # 4 ; Flags of VRAM block (from HAL's AddRAM call)
L2PTUsed # 4 ; Amount of memory used for L2PT
|
VRAMSize # 4 ; Amount of VRAM (in bytes) (may be more than 2M) (at &200 last time I checked)
VideoBandwidth # 4 ; video bandwidth in bytes/sec
......@@ -1193,6 +1206,16 @@ DCache_IndexSegStart # 4
DCache_RangeThreshold # 4
ProcessorArch # 1
]
IOSystemType # 1 ; 0 => old I/O subsystem, 1 => IOEB+82C710 system, 2..255 => ?
ProcessorType # 1 ; Processor type (handles 600 series onwards)
AlignSpace
ProcessorFlags # 4 ; Processor flags (IMB, Arch4 etc)
[ :DEF: ShowWS
! 0, "ProcessorType at ":CC::STR:(ProcessorType)
! 0, "ProcessorFlags at ":CC::STR:(ProcessorFlags)
]
[ HAL
AlignSpace
......@@ -1216,17 +1239,6 @@ Proc_MMU_ChangingUncachedEntries # 4
]
IOSystemType # 1 ; 0 => old I/O subsystem, 1 => IOEB+82C710 system, 2..255 => ?
[ StrongARM
ProcessorType # 1 ; Processor type (handles 600 series onwards)
AlignSpace
ProcessorFlags # 4 ; Processor flags (IMB, Arch4 etc)
[ :DEF: ShowWS
! 0, "ProcessorType at ":CC::STR:(ProcessorType)
! 0, "ProcessorFlags at ":CC::STR:(ProcessorFlags)
]
]
IOAllocPtr # 4 ; current lowpoint of mapped I/O space (also upper limit on DAs)
IOAllocLimit # 4 ; current lowest allowed I/O space (DA creation may move this up)
......@@ -1769,13 +1781,9 @@ SPARE_oldCursorSpace |#| &200 ; padding to avoid changing expo
; SWI despatcher
Export_BranchToSWIExit |#| 4
ASSERT Export_BranchToSWIExit = BranchToSWIExit
ASSERT ?Export_BranchToSWIExit = ?BranchToSWIExit
BranchToSWIExit |#| 4
Export_SvcTable |#| &400
ASSERT Export_SvcTable = SvcTable
ASSERT ?Export_SvcTable = ?SvcTable
SvcTable |#| &400
[ :LNOT: HAL32
ASSERT SvcTable = &01F033FC ; Required for SVC table pokers, 1.20 compatible
......@@ -1860,17 +1868,13 @@ IRQSTK # 0 ; Overflow will give abort
]
# SVCStackSize ; svcstk size. Overflow will give abort
Export_SVCSTK # 0
ASSERT Export_SVCSTK = SVCSTK
ASSERT ?Export_SVCSTK = ?SVCSTK
SVCSTK # 0
[ HAL32
Export_SysHeapStart * SysHeapAddress
SysHeapStart * SysHeapAddress
|
Export_SysHeapStart # 0
SysHeapStart # 0
]
ASSERT Export_SysHeapStart = SysHeapStart
ASSERT ?Export_SysHeapStart = ?SysHeapStart
; *****************************************************************************
......
......@@ -129,7 +129,7 @@ Japanese16BitSound SETL {TRUE} :LAND: STB
ChopOffTheGoolies SETL {FALSE}
GBLL ChecksumCMOS
ChecksumCMOS SETL {TRUE}
ChecksumCMOS SETL {TRUE}
GBLL SqueezeMods ; whether squeezed modules are allowed
SqueezeMods SETL {TRUE}
......@@ -186,15 +186,15 @@ ShadowROM SETL {FALSE} ; &FF800000
Interruptible32bitModes SETL {TRUE} ;if true, limited 32-bit mode code support (interrupt handler does not assume
; 26-bit foreground), also allows faster, 32-bit APCS version of FPEmulator
GBLL EarlierReentrancyInDAShrink ; fix for RAMFS and new FileCore (causes reentrant DA shrink/remove)
EarlierReentrancyInDAShrink SETL {TRUE}
GBLL EarlierReentrancyInDAShrink
EarlierReentrancyInDAShrink SETL {TRUE} ; fix for RAMFS and new FileCore (causes reentrant DA shrink/remove)
GBLL OnlyKernelCanAccessHardwareVectors
OnlyKernelCanAccessHardwareVectors SETL {TRUE} ; if true, only the Kernel is permitted to write to the hardware vectors
; while in 26-bit mode. If false, the whole ROM can (including BASIC
; and the Shared C Library - eg any memcpy!)
GBLL LongCommandLines ; first introduced for Ursula, merged into HAL kernel
GBLL LongCommandLines ; first introduced for Ursula, merged into HAL kernel
LongCommandLines SETL {TRUE}
[ LongCommandLines
LongCLISize * 1024 ; buffer size for long commands
......@@ -289,10 +289,10 @@ mjsSysHeapNodesTrace SETL {FALSE}
NoSPSRcorruption SETL {FALSE} ;preserves SPSR_SVC
GBLL CheckProtectionLink ; if true, disallow CMOS RAM changes if link in protected position
CheckProtectionLink SETL {TRUE} ; NB affects Delete/Copy/R/T and 0-9/.
CheckProtectionLink SETL {TRUE} ; NB affects Delete/Copy/R/T and 0-9/.
GBLL RMTidyDoesNowt ; if true, RMTidy does nothing
RMTidyDoesNowt SETL {TRUE} ; should really be "machine has FSLock in ROM"
RMTidyDoesNowt SETL {TRUE} ; should really be "machine has FSLock in ROM"
GBLL RogerEXEY ; if true, use Roger's new algorithm for XEigFactor, YEigFactor
RogerEXEY SETL {FALSE} ; Marketing don't like it!
......@@ -317,12 +317,11 @@ DebugHeaps SETL {FALSE} ; (may slow things down unaccept
; ChangeDynamicArea and related options
GBLL DebugCDA
DebugCDA SETL {FALSE}
GBLL DebugCDA2
DebugCDA2 SETL {FALSE}
GBLL DebugCDA
DebugCDA SETL {FALSE}
GBLL DebugCDA2
DebugCDA2 SETL {FALSE}
GBLL StorkPowerSave ;True => power saving for Stork AND A4
StorkPowerSave SETL MorrisSupport ;False=> older A4 code only
......@@ -355,7 +354,7 @@ GetMessages SETS ""
DebugForcedReset SETL {FALSE}
GBLA ConfiguredLang
ConfiguredLang SETA 10 ; default configured language
ConfiguredLang SETA 11 ; default configured language
GBLA FirstUnpluggableModule
FirstUnpluggableModule SETA 8 ; Podule, FileSwitch, ResourceFS, Messages, MessageTrans,
......
......@@ -78,41 +78,15 @@ VduDriverWorkSpace # &3000
^ &00004000
ScratchSpace # &4000
[ HAL32
[ {FALSE}
SVCSTK * &FA208000
SysHeapStart * &FB404000
|
SVCSTK * &01C08000
SysHeapStart * &01C08000
]
[ {FALSE}
^ &FAFF33FC
^ &01F04000
|
^ &01F033FC
^ &FAFF4000
]
SvcTable # &400
BranchToSWIExit # 4
|
^ &01C02000
SVCSTK # 0
^ &01C02000
SysHeapStart # 0
^ &01F033FC
SvcTable # &400
^ &01F037FC
BranchToSWIExit # 4 ; from SWI despatcher
]
^ &01F04000
SoundWorkSpace # &2000
SoundDMABufferSize * &1000
^ &01F06000
SoundDMABuffers # SoundDMABufferSize * 2
......
......@@ -33,7 +33,7 @@ AMBPhysBinMask * &7F
ApplicationStart * (32*1024)
AbsMaxAppSize * (28*1024*1024) ;28 Mb application space limit for RISC OS
AbsMaxAppSize * AplWorkMaxSize ;application space limit for RISC OS
AbsMaxAppPages * (AbsMaxAppSize:SHR:Log2PageSize) ;and same limit expressed in Pages
[ ChocolateAMB
......
......@@ -56,7 +56,7 @@
;
; entry: r0 = aborting address (data address for data abort, instruction address
; for prefetch abort), r1-r7 trashable, no stack
; r1 = 1 for prefetch abort, 0 for data abort
; r2 = 1 for prefetch abort, 0 for data abort
; FSR valid for data aborts, unpredictable for prefetch aborts
; exit: r0 = non-zero (NE status) if abort was expected and fixed up, zero (EQ status) if not
; FAR,FSR,SPSR_abt,lr_abt preserved
......@@ -67,40 +67,40 @@ AMB_LazyFixUp ROUT
LDR r12,[r12]
CMP r12,#0
BEQ %FT90 ;not initialised!
LDR r2,AMBFlags
TST r2,#AMBFlag_LazyMapIn_disable :OR: AMBFlag_LazyMapIn_suspend
LDR r1,AMBFlags
TST r1,#AMBFlag_LazyMapIn_disable :OR: AMBFlag_LazyMapIn_suspend
BNE %FT90 ;not active
LDR r2,AMBMappedInNode
CMP r2,#0
LDR r1,AMBMappedInNode
CMP r1,#0
BEQ %FT90 ;no current node
ARM_read_FSR r6 ;hang onto FSR in case we have to preserve it
TEQ r1,#1 ;if data abort
TEQ r2,#1 ;if data abort
ANDNE r3,r6,#&F
TEQNE r3,#7 ; and not a page translation fault
BNE %FT20 ; then not a lazy abort (and FAR may be invalid anyway)
LDR r2,[r2,#AMBNode_Npages]
LDR r2,[r1,#AMBNode_Npages]
SUBS r0,r0,#ApplicationStart
BMI %FT20 ;abort not in current app space
BLO %FT20 ;abort not in current app space
MOV r0,r0,LSR #Log2PageSize ;address now in terms of pages from ApplicationStart
CMP r2,r0
BLS %FT20 ;abort not in current app space
CMP r0,r2
BHS %FT20 ;abort not in current app space
;
; check/update the MappedIn bitmap
;
ADR r2,AMBMappedInRegister
MOV r5,#1
ADD r2,r2,r0,LSR #5-2
BIC r2,r2,#3 ;r2 -> bitmap word affected
AND r3,r0,#31
MOV r5,#1
MOV r5,r5,LSL r3 ;mask for bit affected in bitmap word
LDR r3,[r2]
LDR r4,AMBMappedInNpages ;count it
TST r3,r5 ;if page already mapped in, not a lazy abort
BNE %FT20
ORR r3,r3,r5 ;ok, mark that we are going to map this page in
STR r3,[r2]
LDR r2,AMBMappedInNpages ;count it
ADD r2,r2,#1
STR r2,AMBMappedInNpages
ADD r4,r4,#1
STR r4,AMBMappedInNpages
;
; now map in the the page that went pop
;
......
......@@ -109,6 +109,7 @@ UndStackSize * 8*1024
CamEntriesForVicky * UndStackSoftCamChunk + UndStackSize
[ :LNOT: HAL
UNDSTK * CamEntriesForVicky ; points to end of stack
CAMspace * &02000000-CamEntriesForVicky
[ No26bitCode
AbtStack * &02000000
AbtStackSize * 8*1024
......@@ -375,6 +376,12 @@ BangL2PT_sledgehammer
Pull "pc"
PPLTransL1
& (AP_Full * L1_APMult) + L1_Section ; R any W any
& (AP_Read * L1_APMult) + L1_Section ; R any W sup
& (AP_None * L1_APMult) + L1_Section ; R sup W sup
& (AP_ROM * L1_APMult) + L1_Section ; R any W none
PPLTrans
& (AP_Full * L2_APMult) + L2_SmallPage ; R any W any
& (AP_Read * L2_APMult) + L2_SmallPage ; R any W sup
......@@ -2458,7 +2465,7 @@ UndPreVeneer ROUT
PAbPreVeneer ROUT
Push "r0-r7, lr" ; wahey, we have an abort stack
SUB r0, lr_abort, #4 ; aborting address
MOV r1,#1
MOV r2, #1
BL AMB_LazyFixUp ; can trash r0-r7, returns NE status if claimed and fixed up
Pull "r0-r7, lr", NE ; restore regs and
SUBNES pc, lr_abort, #4 ; restart aborting instruction if fixed up
......@@ -2526,7 +2533,7 @@ DAbPreVeneer ROUT
[ ChocolateAMB
ARM_read_FAR r0 ; aborting address
MOV r1,#0
MOV r2, #0
BL AMB_LazyFixUp ; can trash r0-r7, returns NE status if claimed and fixed up
LDR lr_abort, [r13_abort, #15*4] ; restore lr_abort
LDMIA r13_abort, {r0-r7} ; restore regs
......@@ -2687,7 +2694,7 @@ DAbPreVeneer ROUT
ANDS r0, r10, #1 :SHL: 20 ; r0 = 0 => STM
MOVNE r0, #1 ; = 1 => LDM
LDR r1, [r1, #8*4] ; get SPSR_abort
TST r1, #3 ; test if transfer took place in USR mode
TST r1, #&F ; test if transfer took place in USR mode
ORRNE r0, r0, #2 ; if not then set bit 1 of flags word in r0
MOV r1, sp ; block to transfer from/into
BIC r2, r2, #3 ; LDM/STM always present word-aligned address
......@@ -2896,7 +2903,7 @@ DAbPreVeneer ROUT
Push "r5" ; create stack frame with this value in it
65
LDR r1, [sp, #(1+8)*4] ; get SPSR_abort
TST r1, #3 ; test if transfer took place in USR mode
TST r1, #&F ; test if transfer took place in USR mode
ORRNE r0, r0, #2 ; if not then set bit 1 of flags word in r0
MOV r1, sp ; r1 -> data block
......@@ -3266,8 +3273,6 @@ CheckPage
AND r7, r2, #&000FF000 ; extract bits which are to form L2 offset
LDR lr, [lr, r7, LSR #10] ; lr = L2PT entry
ANDS r7, lr, #3 ; 00 => trans.fault, 01 => large page
; 10 => small page, 11 => reserved (fault)
[ HAL
Push "r0-r3,r12,lr"
LDR r0, [sp, #6*4]
......@@ -3275,6 +3280,8 @@ CheckPage
Pull "r0-r3,r12,lr"
ADD sp, sp, #4
]
ANDS r7, lr, #3 ; 00 => trans.fault, 01 => large page
; 10 => small page, 11 => reserved (fault)
TEQNE r7, #3
BEQ Fault
TEQ r7, #2 ; if small page
......
......@@ -838,7 +838,7 @@ GSTRANS ROUT ; enables interrupts
ADD R5, R5, R1 ; 1st byte we can't write to.
SWI XOS_GSInit
01 CMP R3, R5
BGE %FT03 ; no rheum for byte.
BHS %FT03 ; no rheum for byte.
SWI XOS_GSRead
BVS %FT02 ; bad string
STRB R1, [R3], #1
......
......@@ -1227,7 +1227,7 @@ AlternateLoud
PrinterBufferFrig
AlternateQuiet
Config_NoParm Quiet, 1, 0, DBTBCMOS, 0
Config_Size RamFsSize, 0, 6, RAMDiscCMOS
Config_Size RamFSSize, 0, 6, RAMDiscCMOS
Config_Field Repeat, 0, 7, KeyRepCMOS
Config_Size RMASize, 0, 6, RMASizeCMOS
Config_Size ScreenSize, 0, 6, ScreenSizeCMOS
......