• Robert Sprowson's avatar
    Delegate L2 (and below) cache init at power on/reset to the HAL · 16c00596
    Robert Sprowson authored
    Historically the kernel looked after all aspects of cache control since they were common across all ARMs. However, not all cache controllers are created equal, and sometimes more complex initialisation steps are needed than fit the generic coprocessor ops - for example the PL310 attached to a Cortex-A9 has memory mapped control registers.
    Rather than clutter the kernel with one shot init code for every cache controller invented, we delegate that step to the HAL in HAL_Init. This is only a few hundred instructions later than where it was already being set. The kernel remains responsible for subsequent maintenance, this is just init which is being handed off.
    A quick survey of the Cortex-A TRMs shows:
    A5 - optional, for example ARM's PL310, ref TRM section 8.1.7.
    A7 - optional, C bit of SCTLR, ref TRM section 1.1.
    A8 - L2EN bit of ACTLR, note this bit has been recycled for other uses on other cores, ref TRM section 8.3.
    A9 - not integrated, ARM's PL310 uses bit 0 of control register 1, ref PL310 TRM section 3.1.1.
    A12 - see A17
    A15 - integrated, C bit of SCTLR, ref TRM section 7.2.3.
    A17 - integrated, bit 18 of L2CTLR & C bit of SCTLR, ref TRM section 7.2.
    and while we've got the TRMs open, back fill the CPU id register table.
    
    Version 5.35, 4.79.2.250. Tagged as 'Kernel-5_35-4_79_2_250'
    16c00596
Messages 6.76 KB
BadNumb:Number not recognised
NoSuchSWI1:SWI &%0 not known
VarCantFind:System variable '%0' not found
BuffOverflow:Buffer overflow
Escape:Escape
Syntax:Syntax
OptErr:Syntax: *Opt [<x> [[,] <y>]]
NoHelp:No help found.
HelpFound:==> Help on keyword %0
Address:Address  :
ASCII:ASCII data
Unp:Unplugged modules are:
NoUnp:No modules are unplugged
Podule:(Podule %0)
Extn:(Extn ROM %0)
Modules:No. Position Workspace Name
Number:(Number)
Macro:(Macro)
Result:Result is %0, value :
Integer:an integer
String:a string
ROMMTitle:No. Position|IModule Name|I|IVersion|IStatus|M|J
SYSROM:System ROM
EXTROM:Extn ROM
PODROM:Podule
Active:Active
Dormant:Dormant
Unplugged:Unplugged
Running:Running
Untitled:<Untitled>
Supervisor:Supervisor
ErrSub:E
YesNo:yn
Config:Configuration
Options:options:
Status:status:
Err: (Error number &%0)
Error:Error: %0 (Error number &%1)
UndefinedInstruction:Internal error: undefined instruction at &%0
InstructionAbort:Internal error: abort on instruction fetch at &%0
DataAbort:Internal error: abort on data transfer at &%0
AddressException:Internal error: address exception at &%0
BranchThrough0:Internal error: branch through zero
SDoesntExist:Sprite doesn't exist
ModuleTooOld:Module %0 too old
NaffRelease:Bad vector release
RMNotFound:Module %0 not found
NaffDevNo:Bad device number
BadDevVecRel:Bad device release
RedirectFail:Redirection fails
StackFull:Not enough memory on system stack
OscliLongLine:Too long
NoOscliSpecials:Special field not allowed in filing system prefix to OS_CLI
OscliTooHard:Expansion too complex
BadCommand:Command not recognised
BadParmString:Parameter expansion contains unrecognised characters
TooManyParms:Too many parameters
BadKey:Key number must be in the range 0-15
BadAddress:Address not recognised
OutsideFile:Outside file
NotABlock:Not a heap block
BadDesc:Bad heap descriptor
HeapBadReason:Bad reason code
HeapFailInit:Can't initialise heap
BadLink:Heap overwritten
HeapFailAlloc:Not enough memory (in heap)
BadExtend:Not enough memory (to extend heap)
ExcessiveShrink:Can't shrink heap any further
BadModuleReason:Unknown OS_Module call
CantKill:Module is currently active
MHNoRoom:The area of memory reserved for relocatable modules is full
NoMoreModules:No more modules
NoMoreIncarnations:No more incarnations of that module
PostfixNeeded:Postfix not specified
IncarnationExists:Incarnation already exists
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
BadBase:Base not recognised
BadClaimNum:Bad vector number
SysHeapFull:The area of memory reserved for the system heap is full
NotAllMoved:Memory cannot be moved
ChDynamCAO:Can't change memory area (application running)
AplWSpaceInUse:Application memory area in use
RAMFsUnchangeable:The size of the RAM filing system can only be changed when it is empty
BadDynamicArea:Unknown dynamic area
AreaAlreadyExists:Dynamic area already exists
AreaNotOnPageBdy:Base address not on page boundary
OverlappingAreas:Overlapping areas
CantAllocateArea:Unable to allocate logical address space
CantAllocateLevel2:Unable to allocate page tables for area
UnknownAreaHandler:Unknown dynamic area handler call
RCExc:Return code limit exceeded
RCNegative:Negative return code
BadString:String not recognised
BadVarType:Bad variable type
VarNoRoom:The area of memory reserved for the system variables is full. Use the Task Manager to make more space in the system heap/stack area.
BadMacVal:Bad macro value
BadVarNam:Variable name not recognised
VarTooLong:Variable value too long
BadParameters:Parameters not recognised
ArgRepeated:Argument repeated
BadBra:Mismatched brackets
StkOFlo:Expression stack overflow
MissOpn:Missing operand
MissOpr:Missing operator
BadInt:String is not convertible to integer
StrOFlo:String too long
NaffItm:Unknown operand
DivZero:Division by zero
NotNumeric:Numeric parameter needed
NoThen:There is no THEN
IsString:Expression is a string
ConParmTooBig:Configure parameter too big
BadConOpt:Configure option not recognised
BadStat:Status option not recognised
Config2manyparms:Too many parameters
NoSuchSWI2:SWI name not known
BadTime:Invalid time interval
BadEnvNumber:Bad Environment number
BadReadSysInfo:Unknown OS_ReadSysInfo call
BadMODE:Not enough memory to change to this screen mode
SNoWorkSpace:No memory is reserved for the system sprite area. Use the Task Manager to make some space for the system sprites.
SNoRoom:Not enough memory to create sprite
NoSprites:No sprites
NotGraphics:Not a graphics mode
SCantOpenFile:Can't open file
SNotEnoughRoom:Not enough memory in sprite area
SBadSpriteFile:Bad sprite file
SNoRoomToMerge:Not enough memory to add sprite
SBad2ndPtr:Bad 2nd ptr
InvalidRowOrCol:Invalid row or column
InvalidHeight:Invalid height
InvalidWidth:Invalid width
NoRoomToInsert:Not enough memory to insert row or column
SpriteAlreadyExists:Sprite already exists
InvalidSpriteMode:Invalid sprite mode
SBadReasonCode:Bad sprite reason code
CantInTeletext:Can't switch output in teletext mode
SInvalidSaveArea:Invalid save area
SpriteIsCurrentDest:Sprite is current destination
BadDPI:Illegal XDPI or YDPI in sprite
ModeNotAvailable:Screen mode not available
BadPixelDepth:Bad pixel depth
BadMSFlags:Illegal flags in mode selector
CDATStackOverflow:System stack overflow
NoSuchSWI:SWI not known
BadSav:Incorrect number of parameters for *Save
CmosRst:CMOS RAM reset, press ESCAPE to continue
MonType:Monitor type reconfigured
NoKbd:No keyboard present - autobooting
BreakPt:Stopped at break point at &%0
STail:|J|MUse *Configure to set the options.|J|M
CTail1:|J|MWhere:|J|MD is a decimal number, a hexadecimal number preceded by &,|J|Mor the base followed by underscore, followed|J|M
CTail2:by digits in the given base.|J|MItems within [ ] are optional.|J|MUse *Status to display the current settings.|J|M
Zonk:Unknown OS_ScreenMode reason code
SNoMask:Mask or Palette operations not supported in this display depth
BadVIDCDiv:Bad VIDC divider value
BadPlatReas:Unknown OS_PlatformFeatures reason code
UnConv:Unsupported conversion
BadKeyHandler:Bad key handler
BadGDriver:Bad graphics driver number
TooManyGDrivers:Too many graphics drivers

600:ARM 600 Processor
610:ARM 610 Processor
700:ARM 700 Processor
710:ARM 710 Processor
710a:ARM 710a Processor
SA110:SA-110 Processor
7500:ARM 7500 Processor
7500FE:ARM 7500FE Processor
SA1100:SA-1100 Processor
SA1110:SA-1110 Processor
720T:ARM 720T Processor
920T:ARM 920T Processor
922T:ARM 922T Processor
X80200:80200 Processor
X80321:80321 Processor
ARM1176JZF_S:ARM1176JZF-S Processor
CA5:Cortex-A5 Processor
CA7:Cortex-A7 Processor
CA8:Cortex-A8 Processor
CA9:Cortex-A9 Processor
CA15:Cortex-A15 Processor
CA17:Cortex-A17 Processor