- 14 Jun, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/HAL - The VMSAv6/v7 memory model allows speculative instruction fetches from any memory (including device/strongly-ordered), unless the memory is marked as non-executable. So to prevent interference with read-sensitive devices we must make sure all appropriate IO memory is marked as non-executable. Admin: Tested on IGEPv5 Fixes data corruption seen when reading from SD card Version 5.35, 4.79.2.265. Tagged as 'Kernel-5_35-4_79_2_265'
-
- 07 Feb, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/ARMops, s/HAL - Errata 814220 states that the Cortex-A7 set/way cache maintenance operations violate the usual operation ordering rules, such that an L2 maintenance operation which is started after an L1 operation may actually complete before it, causing data corruption if the L1 data was to be evicted to the L2 entry. Implement the suggested workaround of performing a DSB when switching cache levels, rather than just at the end of the combined L1+L2 group of operations. Admin: Tested on Raspberry Pi 2 Version 5.35, 4.79.2.257. Tagged as 'Kernel-5_35-4_79_2_257'
-
- 27 Oct, 2014 1 commit
-
-
Robert Sprowson authored
Following hot on the heels of revision 1.1.2.39, when there's more than one block in existance the shuffle up loop trashes v3 & v4, which we need in the calculation just below. Could just use other registers in the shuffle loop, but we only have ip free at that point, so be lazy and just reload & reextract the flags. Tested on a softload Kinetic, now the RAM speed flags look sensible and the RAM clear doesn't fall off the end. Version 5.35, 4.79.2.244. Tagged as 'Kernel-5_35-4_79_2_244'
-
- 23 Jul, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/HAL - Change ClearPhysRAM to always map in memory as cacheable + bufferable instead of only on StrongARM, as it's an optimisation that can help other platforms as well. Admin: Tested on BB-xM, StrongARM RiscPC Version 5.35, 4.79.2.231. Tagged as 'Kernel-5_35-4_79_2_231'
-
- 30 Apr, 2014 1 commit
-
-
Robert Sprowson authored
When Subtractv1v2fromRAMtable is called to remove a region that results in one of the RAM blocks being split in the middle the resulting size was incorrect. The shuffle up loop was reusing v6 as an iterator not realising that it's needed to calculate the size of the 2nd half later, the error introduced was the difference between the physical address where PhysRamTable is located and the block being split - these could be a long way apart for example when there are two SDRAM banks. Even if the PhysRamTable is nearby (eg. 1 SDRAM bank) the result would be some weird sized entries which ultimately mean some dynamic area address space is "leaked". Fixed by swapping to v7, and for symmetry also adjusted the shuffle down loop to match. Version 5.35, 4.79.2.224. Tagged as 'Kernel-5_35-4_79_2_224'
-
- 20 Apr, 2014 1 commit
-
-
Jeffrey Lee authored
Add OS_Memory 24 implementation. Change OS_ValidateAddress to use it. Fix kernel leaving the physical access MB in a messy state. Try and protect against infinite abort loops caused by bad environment handlers. Detail: s/MemInfo - Added an implementation of ROL's OS_Memory 24 call. Unlike the old OS_ValidateAddress call, this call should successfully report the presence of all memory areas known to the kernel. It should also correctly indicate which parts of a sparse DA are mapped in, unlike the old OS_ValidateAddress implementation. s/ChangeDyn - Update dynamic area handling to construct a lookup table for mapping logical addresses to dynamic areas; this is used by OS_Memory 24 to quickly locate which DA(s) hit a given region s/AMBControl/main - Make sure lazy task swapping is marked as disabled when AMB_LazyMapIn is {FALSE} - required so that OS_Memory 24 will give application space the correct flags s/ArthurSWIs - Switch OS_ValidateAddress over to using OS_Memory 24, as per ROL. For compatibility, Service_ValidateAddress is still issued for any areas which the kernel doesn't recognise (currently, OS_Memory 24 doesn't issue any service calls itself) s/Convrsions - ADR -> ADRL to keep things happy s/HAL - Fix L2PT page allocation and RAM clear to release the physical access region once they're done with it s/Kernel - Make the error dispatcher validate the error handler code ptr & error buffer using OS_Memory 24 before attempting to use them. If they look bad, reset to default. Should prevent getting stuck in an infinite abort loop in some situations (e.g. as was the case with ticket 279). The system might not fully recover, but it's better than a hard crash. s/Middle - Rework data/prefetch/etc. abort handlers so that DumpyTheRegisters can validate the exception dump area via OS_Memory 24 before anything gets written to it. Should also help to prevent some infinite abort loops. Strip 26bit/pre-HAL code to make things a bit more readable. hdr/KernelWS - Update comment Admin: Tested on BB-xM, Raspberry Pi Version 5.35, 4.79.2.222. Tagged as 'Kernel-5_35-4_79_2_222'
-
- 19 Apr, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/ARMops - If extended pages aren't supported, make sure we use a PCBTrans table which doesn't use L2_X, otherwise the AP flags for some of the sub-pages will be corrupted when the PCB flags get merged in. Add some more comments to the PCBTrans tables so it's easier to see what the different columns are. s/ARM600 - Fix BangCam to use extended pages if they're supported; otherwise (assuming ARMops has selected the right PCBTrans table) we'll end up corrupting the AP flags again s/HAL - Fix ConstructCAMfromPageTables using the wrong register for ZeroPage when looking up MMU_PCBTrans. Correct a few comments. Admin: Tested on Iyonix Page table examination now shows that all subpages have the correct (i.e. identical) AP flags. Previously some pages would have incorrect access (e.g. every 4th subpage in some FileCore disc map/dir buffer DAs were writable in user mode) ARMops fix will presumably mean extended pages will now work correctly on IOP 80200, as before it would have been using small pages with corrupt AP flags Version 5.35, 4.79.2.221. Tagged as 'Kernel-5_35-4_79_2_221'
-
- 04 Apr, 2014 1 commit
-
-
John Ballance authored
HAL graphics driver calls. Added further debug capability Detail: Added additional HAL call. minor code correction in hal graphicsv dispatcher Added DebugReg macro to aid debugging Admin: (highlight level of testing that has taken place) (bugfix number if appropriate) Version 5.35, 4.79.2.215. Tagged as 'Kernel-5_35-4_79_2_215'
-
- 25 Mar, 2014 1 commit
-
-
Ben Avison authored
Detail: Early in OS startup, certain kernel memory areas (zero page, the privileged mode stacks, system heap, etc) are initially allocated only in the L2PT. The soft CAM is initialised later, using the L2PT as it is at that point. However, the pointer to the table that maps from page table cache policy bit layouts for the current CPU back to the platform-independent (OS_DynamicArea style) flags was corrupted, meaning that the CAM entries for these memory areas were initialised with a default value, which was non-cacheable non-bufferable. Application slots and most dynamic areas were unaffected, because once enough of the kernel was initialised to be able to use AMBControl or OS_ChangeDynamicArea, this function was no longer used. The problem comes when those pages come to be remapped; this could be due to requests for specific physical RAM pages, or (what I was actually investigating) DDT changing the access permissions on them. The problem was that as far as the CPU was concerned, the pages were cacheable/bufferable, but BangCam examined the soft CAM to decide what cache management operations to perform, and so got it wrong. The subsequent poke of the L2PT resulted in undefined CPU behaviour; in particular it seems to cause L2 caches to throw a strop (enough so that disabling the L2 cache was enough to make DDT significantly more reliable). Admin: It looks like this bug has been present on all HAL versions of RISC OS. Tested with DDT on a Beagleboard, previously the most crashy platform. There remains an IRQ (and FIQ) hole in OS_SetMemMapEntries when changing permissions on the page containing the processor vectors, which I haven't attempted to fix. Arguably, it should also issue Service_PagesSafe/Unsafe, in case anyone is DMAing to/from the remapped pages. Version 5.35, 4.79.2.212. Tagged as 'Kernel-5_35-4_79_2_212'
-
- 28 Sep, 2013 1 commit
-
-
Robert Sprowson authored
No longer returns a RISC OS specific error block to the HAL, instead uses a platform agnostic IICStatus value. Version 5.35, 4.79.2.196. Tagged as 'Kernel-5_35-4_79_2_196'
-
- 27 May, 2013 1 commit
-
-
Robert Sprowson authored
The StrongARM TRM (and hints from ARM600.s revision 4.3.2.2) show that the StrongARM will only do burst writes to memory marked as C=1 B=1, but by default RISCOS_AccessPhysicalAddress only allows bufferable. So, checking for StrongARM first, two extra snippets are enabled - first mark as C=1 B=1, then afterwards clean the cache before moving onto the next 1MB. On a StrongARM Kinetic these burst writes improve the RAM clear from ~60ms per MB to 40ms per MB. For a 256MB SODIMM that's over 5s knocked off the boot time. Other memory configurations will be similarly improved, though 256MB is of course the maximum the motherboard can hold. Tested in ROM on a Risc PC with StrongARM and ARM710. Version 5.35, 4.79.2.189. Tagged as 'Kernel-5_35-4_79_2_189'
-
- 28 Mar, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: Briefly, this set of changes: * Adjusts PhysRamTable so that it retains the flags passed in by the HAL from OS_AddRAM (by storing them in the lower 12 bits of the size field) * Sorts the non-VRAM entries of PhysRamTable by speed and DMA capability, to ensure optimal memory allocation during OS startup. * Adjust the initial memory allocation logic to allow the cursor/sound chunk and HAL noncacheable workspace to come from DMA capable memory * Extends OS_Memory 12 to accept a 'must be DMA capable' flag in bit 8 of R0. This is the same as available in ROL's OS. * Extends OS_DynamicArea 0 to allow the creation of dynamic areas that automatically allocate from DMA capable memory. In ROL's OS this was done by setting bit 12 of R4, but we're using bits 12-14 for specifying the cache policy, so instead bit 15 is used. * Fixes OS_ReadSysInfo 6 to return the correct DevicesEnd value now that the IRQ/device limit is computed at runtime File changes: * hdr/OSEntries - Add definitions of the various flags passed to OS_AddRAM by the HAL. Add a new flag, NoDMA, for memory which can't be used for DMA. * hdr/KernelWS - Tidy PhysRamTable definition a bit by removing all the DRAM bank definitions except the first - this makes it easier to search for code which is interacting with the table. Remove VRAMFlags, it's redundant now that the flags are kept in the table. Add DMA allocation info to InitWs. * s/AMBControl/memmap - Updated to mask out the flags from PhysRamTable when reading RAM block sizes. * s/ARM600 - Strip out a lot of IOMD specific pre-HAL code. * s/ChangeDyn - Updated to cope with the flags stored in PhysRamTable. Implement support for DMA-capable dynamic areas. Rewrite InitDynamicAreas to insert pages into the free pool in the right order so that the fastest memory will be taken from it first. * s/GetAll, s/Middle - Fix OS_ReadSysInfo 6 to return the correct HAL-specific DevicesEnd value * s/HAL - Significant rework of initial RAM allocation code to allow the kernel workspace to come from the fastest DMA incapable RAM, while also allowing allocation of DMA capable memory for HAL NCNB workspace & kernel cursor/sound chunks. ClearPhysRAM rewritten as part of this. * s/MemInfo - Updated to cope with the flags stored in PhysRamTable. Add support for the new OS_Memory 12 flag. Update OS_Memory 7 to not assume PhysRamTable entries are sorted in address order, and rip out the old pre-HAL IOMD implementation. * s/NewReset - Remove GetPagesFromFreePool option, assume TRUE (as this has been the case for the past 10+ years). Revise a few comments and strip dead code. Update to cope with PhysRamTable flags. * s/VMSAv6 - Remove a couple of unused definitions * s/vdu/vdudriver - Update to cope with PhysRamTable flags Admin: Tested in Kinetic RiscPC ROM softload, Iyonix softload, & OMAP3 Version 5.35, 4.79.2.186. Tagged as 'Kernel-5_35-4_79_2_186'
-
- 24 Mar, 2013 1 commit
-
-
Robert Sprowson authored
Not tagged.
-
- 22 Jan, 2013 1 commit
-
-
Jeffrey Lee authored
Add new HAL call, HAL_IRQMax, to allow the kernel to determine the number of IRQ lines/devices at runtime Detail: hdr/HALEntries - Reuse the old HAL_MonitorLeadID call number for HAL_IRQMax hdr/KernelWS - Rearrange CursorChunkAddress workspace a bit. Removed unused OldOscliBuffs and a couple of pre-HAL allocations, and made DefIRQ1Vspace the same size for all build configs. Add an IRQMax var to zero page workspace to cache the value returned by HAL_IRQMax. s/HAL - Initialise IRQMax shortly after HAL initialisation. Revise ClearPhysRAM comment to reflect which vars are preserved in the current version of the code. s/NewIRQs - Strip out a fair bit of pre-HAL code to make the file more readable. Update OS_ClaimDeviceVector/OS_ReleaseDeviceVector to check against IRQMax instead of the MaxInterrupts compile-time limit. Admin: Tested on BB-xM, Iyonix, RiscPC, Pi Although the OS will now nominally adapt at runtime to how many IRQ devices there are, it's still using MaxInterrupts as an upper limit as the device claimant table has a fixed memory allocation. Version 5.35, 4.79.2.182. Tagged as 'Kernel-5_35-4_79_2_182'
-
- 30 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/HAL, s/NewReset - Moved IIC initialisation to just after timer initialisation, and crucially, before keyboard scan initialisation. This makes things a lot easier for the HAL if it wants to use IIC during the keyboard scan (previously IIC would be enabled inbetween HAL_KbdScanSetup and the first call to HAL_KbdScan) hdr/HALDevice - Added a device ID for the Pandora audio controller Admin: Tested on Pandora Version 5.35, 4.79.2.168. Tagged as 'Kernel-5_35-4_79_2_168'
-
- 07 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: Docs/RPiNotes - Deleted, contents no longer relevant s/HAL, s/Kernel, s/vdu/vduswis, s/pmf/key - Cleaned up debug code s/NewIRQs - No need to piggy back on timer 0 IRQ to generate a fake VSync; PushModeInfo already claims/releases TickerV as appropriate if video driver doesn't provide a VSync IRQ. s/NewReset - Re-enable LookForHALRTC call, the stack imbalance bug was fixed before the Pi changes were merged in s/vdu/vducursoft - Streamline PostWrchCursor a bit by only preserving R14 around RestorePointer if the software pointer is in use s/vdu/vdudriver - Amend ModeChangeSub improvements to ensure old external framestore handling logic is used if driver doesn't support framestore growth/realloc Admin: Tested on Raspberry Pi with high processor vectors Kernel now looks to be in a good state for merging back into HAL branch Note - Software mouse pointer support in vducursoft only checks HALVideoFeatures, so doesn't take into account the capabilities of any GraphicsV driver that may be in use. Version 5.35, 4.79.2.147.2.20. Tagged as 'Kernel-5_35-4_79_2_147_2_20'
-
- 02 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/HALEntries - Add new HAL_Video_StartupMode HAL entry to allow the HAL to specify a startup mode s/HAL, s/Kernel - Tweaked debug routines s/vdu/vdudriver - Make use of HAL_Video_StartupMode in InitialiseMode to decide what initial mode should be. Clean up some hacks & debug. Improve handling of external framestores; if bit 5 of GraphicsV_DisplayFeatures r0 is set, the kernel will now allow the display driver to grow/shrink/move its framestore in response to mode changes. s/vdu/vdugrafv - Adjust default GV_FramestoreAddress implementation to only claim vector if HAL returns a framestore s/vdu/vduswis - Re-enable FindOKMode Admin: Tested on Raspberry Pi with high processor vectors Version 5.35, 4.79.2.147.2.18. Tagged as 'Kernel-5_35-4_79_2_147_2_18'
-
- 14 Aug, 2012 2 commits
-
-
Jeffrey Lee authored
Detail: s/HAL - Fix crash in OS_Hardware 4/5 when encountering devices which are newer than the caller supports Admin: Untested, but same fix as Pi branch Version 5.35, 4.79.2.163. Tagged as 'Kernel-5_35-4_79_2_163'
-
Jeffrey Lee authored
Fix crash in OS_Hardware 4 when encountering devices which are newer than the caller supports. Add new device IDs for Raspberry Pi audio devices. Detail: s/HAL - Fixed crash in OS_Hardware 4 when encountering devices which are newer than the caller supports hdr/HALDevice - Added new HAL devices for Raspberry Pi audio devices Admin: Tested on Raspberry Pi with high processor vectors Version 5.35, 4.79.2.147.2.17. Tagged as 'Kernel-5_35-4_79_2_147_2_17'
-
- 06 Jul, 2012 1 commit
-
-
Ben Avison authored
Detail: This functions like OS_Hardware 4, but enumerates devices in the chronological order of registration. Admin: Builds, but untested. Version 5.35, 4.79.2.160. Tagged as 'Kernel-5_35-4_79_2_160'
-
- 21 Jun, 2012 1 commit
-
-
Robert Sprowson authored
With no VRAM, in Kernerl.s.HAL line 370, the less than 16M case sets aside half the RAM as available for video (more than, it uses no more than 32M) but the exactly equals 16M case set aside none. Add some exports to hdr.HALEntries to define the subreasons to OS_Hardware. Version 5.35, 4.79.2.154. Tagged as 'Kernel-5_35-4_79_2_154'
-
- 21 May, 2012 1 commit
-
-
Robert Sprowson authored
While the HAL and kernel were being split some temporary macros were used for the bits being worked on, after 12 years of use they're probably safe to adopt. mjsCallHAL -> CallHAL; mjsAddressHAL -> AddressHAL; mjsHAL -> HAL. OS_VIDCDividerSWI code now always does NoSuchSWI (had been switched out previously). File vduhint.s no longer assembled (was empty). Version 5.35, 4.79.2.150. Tagged as 'Kernel-5_35-4_79_2_150'
-
- 18 May, 2012 1 commit
-
-
Ben Avison authored
Detail: This one evaded the cull in my last commit Admin: Still works on a Raspberry Pi Version 5.35, 4.79.2.147.2.3. Tagged as 'Kernel-5_35-4_79_2_147_2_3'
-
- 10 May, 2012 1 commit
-
-
Ben Avison authored
Detail: This is a new branch from the current tip of the HAL branch, incorporating the changes received from Adrian Lees. The same caveats apply - this is a work in progress and will not work on any other platform at present. Admin: Builds, but not tested. Version 5.35, 4.79.2.147.2.1. Tagged as 'Kernel-5_35-4_79_2_147_2_1'
-
- 25 Feb, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/OSEntries, s/HAL, s/Kernel - Add compressed ROM support. With the current scheme, a compressed ROM will have everything except the HAL and kernel compressed. During the keyboard scan period the kernel will allocate some temporary decompression workspace and call the decompression stub that was appended to the ROM. The decompression stub is expected to perform in-place decompression of the ROM. Once decompression is complete the workspace will be freed and the page tables updated to make the ROM image readonly. It's the HAL's responsibility to make sure any compressed ROM is located in an area of physically contiguous RAM large enough to hold the uncompressed image. More info here: http://www.riscosopen.org/wiki/documentation/show/Compressed%20ROMs Makefile, h/OSEntries - Add C export of hdr/OSEntries hdr/HALDevice - Add device ID for Tungsten video device. Convert tabs to spaces for consistency. hdr/HALEntries, s/NewReset - Moved KbdFlag_* definitions to hdr/HALEntries so HALs can use them in their keyboard scan code s/ArthurSWIs, S/HAL, s/HeapSort, s/Kernel, s/MemInfo, s/Middle, s/NewIRQs, s/TickEvents, s/vdu/vdugrafb - Make use of BLX, BFI and long multiplies if the CPU supports them. Don't support SWI calls from thumb mode if the CPU doesn't support thumb. s/HAL - Made the LDMIA in Init_MapInRAM more sensible (register order was backwards). The old code did work, but wasn't doing what the comments described. Removed unused/unfinished HAL_Write0 function. Improve RISCOS_LogToPhys to check L1PT for any section mappings if the logical_to_physical call fails s/ModHand - Save one instruction by using ADR instead of MOV+ADD to compute lr s/NewReset, s/PMF/key - Pass L1PT to HAL_Reset to allow machines without hardware reset (e.g. IOMD) to perform resets by manually disabling the MMU and restarting the ROM s/vdu/vdudriver, s/vdu/vdugrafv - Use GVEntry macro borrowed from NVidia module for setting up the GraphicsV jump table. Make GraphicsV_ReadPaletteEntry call HAL_Video_ReadPaletteEntry if left unclaimed. Fixup GV_Render to only call HAL_Video_Render if the HAL call is implemented. Admin: Tested with OMAP3, IOMD & Tungsten ROMs/softloads. Version 5.35, 4.79.2.138. Tagged as 'Kernel-5_35-4_79_2_138'
-
- 24 Sep, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: s/Arthur3, s/ChangeDyn, s/HAL, s/HeapMan, s/Middle, s/MoreSWIs, s/NewIRQs, s/Utility, s/VMSAv6, s/PMF/key, s/PMF/osbyte, s/PMF/osword, s/vdu/vdudecl, s/vdu/vdudriver, s/vdu/vduplot, s/vdu/vduwrch - Tweaked lots of LDM/STM instructions in order to get rid of the depracation/performance warnings Admin: Tested on rev A2 BB-xM Version 5.35, 4.79.2.98.2.53. Tagged as 'Kernel-5_35-4_79_2_98_2_53'
-
- 12 Sep, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/Copro15ops: - Fixed incorrect encodings of ISH/ISHST variants of DMB/DSB instructions s/ARMops, s/HAL, hdr/KernelWS: - Replace the ARMv7 cache maintenance code with the example code from the ARMv7 ARM. This allows it to deal with caches with non power-of-two set/way counts, and caches with only one way. - Fixed Analyse_WB_CR7_Lx to use the cache level ID register to work out how many caches to query instead of just looking for a 0 result from CSSIDR. - Also only look for 7 cache levels, since level 8 doesn't exist according to the ARMv7 ARM. s/NewReset: - Removed some incorrect/misleading debug output Admin: Tested on rev A2 BB-xM Version 5.35, 4.79.2.98.2.51. Tagged as 'Kernel-5_35-4_79_2_98_2_51'
-
- 22 Aug, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: s/HAL - Reset_IRQ_Handler now uses HAL_IRQSource to determine the cause of the interrupt, using that value to work out which IIC bus (if any) generated the IRQ. If it's unrecognised it passes it to HAL_KbdScanInterrupt, and if that fails to do anything it'll disable the IRQ. This aims to fix the spurious "No XStart!" debug spam that the OMAP IIC drivers produce when the keyboard scan is running, and to fix the potential IIC breakage that could occur by the IIC code trying to clear the non-existant interrupt. Note that behaviour of HAL_KbdScanInterrupt has now been changed; it now accepts the device number in a1, and is expected to return either -1 (if the interrupt was handled) or the device number given as input (if the interrupt wasn't handled, e.g. not from a device managed by the keyboard scan code). Admin: Tested on rev C2 BB Version 5.35, 4.79.2.98.2.49. Tagged as 'Kernel-5_35-4_79_2_98_2_49'
-
- 08 Aug, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: A whole mass of changes to add high processor vectors + zero page relocation support to the Cortex branch of the kernel At the moment the code can only cope with two ZeroPage locations, &0 and &FFFF0000. But with a bit more tweaking those restrictions can probably be lifted, allowing ZeroPage to be hidden at almost any address (assuming it's fixed at compile time). If I've done my job right, these restrictions should all be enforced by asserts. There's a new option, HiProcVecs, in hdr/Options to control whether high processor vectors are used. When enabling it and building a ROM, remember: * FPEmulator needs to be built with the FPEAnchor=High option specified in the components file (not FPEAnchorType=High as my FPEmulator commit comments suggested) * ShareFS needs unplugging/removing since it can't cope with it yet * Iyonix users will need to use the latest ROOL boot sequence, to ensure the softloaded modules are compatible (OMAP, etc. don't really softload much so they're OK with older sequences) * However VProtect also needs patching to fix a nasty bug there - http://www.riscosopen.org/tracker/tickets/294 The only other notable thing I can think of is that the ProcessTransfer code in s/ARM600 & s/VMSAv6 is disabled if high processor vectors are in use (it's fairly safe to say that code is obsolete in HAL builds anyway?) Fun challenge for my successor: Try setting ZeroPage to &FFFF00FF (or similar) so its value can be loaded with MVN instead of LDR. Then use positive/negative address offsets to access the contents. File changes: - hdr/ARMops - Modified ARMop macro to take the ZeroPage pointer as a parameter instead of 'zero' - hdr/Copro15ops - Corrected $quick handling in myISB macro - hdr/Options - Added ideal setting for us to use for HiProcVecs - s/AMBControl/allocate, s/AMBControl/growp, s/AMBControl/mapslot, s/AMBControl/memmap, s/AMBControl/service, s/AMBControl/shrinkp, s/Arthur2, s/Arthur3, s/ArthurSWIs, s/ChangeDyn, s/ExtraSWIs, s/HAL, s/HeapMan, s/Kernel, s/MemInfo, s/Middle, s/ModHand, s/MoreSWIs, s/MsgCode, s/NewIRQs, s/NewReset, s/Oscli, s/PMF/buffer, s/PMF/IIC, s/PMF/i2cutils, s/PMF/key, s/PMF/mouse, s/PMF/osbyte, s/PMF/oseven, s/PMF/osinit, s/PMF/osword, s/PMF/oswrch, s/SWINaming, s/Super1, s/SysComms, s/TickEvents, s/Utility, s/vdu/vdu23, s/vdu/vdudriver, s/vdu/vdugrafl, s/vdu/vdugrafv, s/vdu/vdupalxx, s/vdu/vdupointer, s/vdu/vduswis, s/vdu/vduwrch - Lots of updates to deal with zero page relocation - s/ARM600 - UseProcessTransfer option. Zero page relocation support. Deleted pre-HAL ClearPhysRAM code to tidy the file up a bit. - s/ARMops - Zero page relocation support. Set CPUFlag_HiProcVecs when high vectors are in use. - s/KbdResPC - Disable compilation of dead code - s/VMSAv6 - UseProcessTransfer option. Zero page relocation support. Admin: Tested with OMAP & Iyonix ROM softloads, both with high & low zero page. High zero page hasn't had extensive testing, but boot sequence + ROM apps seem to work. Version 5.35, 4.79.2.98.2.48. Tagged as 'Kernel-5_35-4_79_2_98_2_48'
-
- 08 Jun, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/ARMops - Amended ARMvF description to state that an ARMvF CPU can be ARMv6 or ARMv7 s/ARMops - Move ARM11JZF_S CPUDesc to KnownCPUTable_Fancy, since it's ARMvF. Update ARM_Analyse_Fancy to detect whether ARMv6 or ARMv7 style cache control is in use, and react accordingly. s/HAL - Simplified system control register/MMUC initialisation. There are now just two types of setup - one for ARMv3-ARMv5 and one for ARMv6-ARMv7. Modified HAL_InvalidateCache_ARMvF to use the appropriate cache flush instructions depending on whether it's an ARMv6 or ARMv7 style cache. Admin: S3C6410 and other ARMv6 machines should work now. Tested on BB-xM rev A2. Version 5.35, 4.79.2.98.2.39. Tagged as 'Kernel-5_35-4_79_2_98_2_39'
-
- 04 Jun, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: Makefile - Added hdr.Variables to the C header export list hdr/ARMops, s/ARMops - Added ARM1176JZF-S to the list of known CPUs s/ARMops - Fix unaligned memory access in ARM_PrintProcessorType hdr/Copro15ops, s/ARMops, s/HAL, s/VMSAv6, s/AMBControl/memmap - Fixed all myDSB/myISB/etc. macro instances to specify a temp register, so that they work properly when building an ARMv6 version of the kernel Admin: Fixes build errors with the latest Draw module. Should also allow the kernel to work properly with the new S3C6410 port. ARMv6 version builds OK, but no other builds or runtime tests have been made. Version 5.35, 4.79.2.98.2.38. Tagged as 'Kernel-5_35-4_79_2_98_2_38'
-
- 22 May, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: Makefile - Now exports a C version of hdr.OSEntries, for use by the new HAL USB drivers s/GetAll, s/Kernel - The HALSize env variable is now used in place of hard-coded values for the HAL size s/HAL - Reset_IRQ_Handler now switches to SVC mode before calling HAL_KbdScanInterrupt, to allow the HAL USB drivers to re-enable interrupts if they wish. s/VMSAv6 - Deleted some obsolete definitions Admin: Tested on rev C2 BB, A2 BB-xM, C1 TouchBook Needs latest BuildSys, Env, HdrSrc Version 5.35, 4.79.2.98.2.37. Tagged as 'Kernel-5_35-4_79_2_98_2_37'
-
- 19 Feb, 2011 1 commit
-
-
Jeffrey Lee authored
Detail: OS_IICOp (and in turn, RISCOS_IICOpV) now treat the top byte of R1 as containing the IIC bus number, allowing multiple buses to be used. hdr/KernelWS - Changed workspace a bit so that the kernel can support up to IICBus_Count buses (currently 3), each with its own IICBus_* block. s/HAL - Update Reset_IRQ_Handler to cope with interrupts from all IIC buses instead of just the first. Fix/update RISCOS_IICOpV description. s/NewIRQs - Update InitialiseIRQ1Vtable to set up interrupt handlers for all IRQ-supporting IIC buses s/NewReset - Get rid of the IICAbort call that was just before IICInit. IICInit now calls IICAbort itself. s/PMF/IIC - Bulk of the changes. Code now uses the IICBus_ structures instead of the IICStatus and IICType variables. Re-entrancy code has been updated to take into account the possiblity of multiple buses; when OS_IICOp calls are nested, the IIC transfers will be added to bus-specific queues instead of all going in the same queue. However only one queue will be processed at a time. s/ChangeDyn - Workspace shuffling means a couple of MOV's needed to be swapped with LDR's when getting immediate constants Admin: Tested with OMAP & IOMD ROM builds. Both high & low-level bus types seem to work OK, along with re-entrancy, both on the same bus and on a different bus. Version 5.35, 4.79.2.98.2.33. Tagged as 'Kernel-5_35-4_79_2_98_2_33'
-
- 04 Oct, 2010 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/Options - ARM6support and GetKernelMEMC values are now derived from the value of MEMM_Type s/ARMops, s/HAL - Code to detect and handle ARMv7 CPUs is now only enabled when using VMSAv6 MMU model. Saves us from having to deal with lack of myIMB, myDSB, etc. implementations on pre-ARMv6. s/HAL - Removed some debug code s/NewReset - Fix bug spotted by Tom Walker where R12 wasn't being restored by LookForHALRTC if a non-HAL RTC had already been found s/AMBControl/memmap - correct the assert clause that was checking that &FFE are the correct L2PT protection bits for non-VMSAv6 machines Admin: Tested this kernel on a rev C2 beagleboard & Iyonix softload. Also compiled it into an IOMD ROM, but didn't try running it. Version 5.35, 4.79.2.98.2.32. Tagged as 'Kernel-5_35-4_79_2_98_2_32'
-
- 23 Jun, 2010 1 commit
-
-
Jeffrey Lee authored
Update Cortex kernel to use correct instruction/memory barriers and to perform branch target predictor maintenance. Plus tweak default CMOS settings. Detail: hdr/Copro15ops - Added myISB, myDSB, myDMB macros to provide barrier functionality on ARMv6+ s/ARMops, s/HAL, s/VMSAv6, s/AMBControl/memmap - Correct barrier operations are now performed on ARMv6+ following CP15 writes. Branch predictors are now also maintained properly. s/NewReset - Change default CMOS settings so number of CDFS drives is 0 in Cortex builds. Fixes rogue CDFS icon on iconbar. Admin: Tested on rev C2 beagleboard Version 5.35, 4.79.2.98.2.27. Tagged as 'Kernel-5_35-4_79_2_98_2_27'
-
- 06 Nov, 2009 1 commit
-
-
Jeffrey Lee authored
Fix bug when creating code variables via OS_SetVarVal, remove errant line from s.ARM600, automatically enable alignment exceptions if NoUnaligned is TRUE (Cortex branch) Detail: s/ARM600 - Removed an errant line that could have caused problems if the ARM600 MMU model was used with the WB_CR7_Lx cache type s/Arthur2 - OS_SetVarVal was failing to call XOS_SynchroniseCodeAreas after copying the code variables code block into the system heap. This has now been fixed. s/HAL - Alignment exceptions are now automatically enabled when the kernel is built with the NoUnaligned option turned on. Admin: Tested on rev C2 beagleboard. OS_SetVarVal fix means the Debugger module now shows the right register names instead of ofla! Version 5.35, 4.79.2.98.2.15. Tagged as 'Kernel-5_35-4_79_2_98_2_15'
-
- 10 May, 2009 1 commit
-
-
Jeffrey Lee authored
Detail: s/ARMops - Fix IMB_Range_WB_CR7_Lx to clean the correct number of cache lines s/HAL - Change CP15 control register flags so unaligned loads are enabled on ARMv6 (to simplify support for ARMv7 where unaligned loads are always enabled, and to match the behaviour expected by the example code in Hdr:CPU.Arch) s/AMBControl/memmap - Make AMB_LazyFixUp use the correct L2PT protection flags depending on ARM600/VMSAv6 MMU model. Also guard against problems caused by future L2PT flag changes. s/vdu/vdugrafj - Fix previously undiscovered 32bit incompatability in GetSprite (OS_SpriteOp 14/16) Admin: Tested on rev C2 beagleboard Version 5.35, 4.79.2.98.2.5. Tagged as 'Kernel-5_35-4_79_2_98_2_5'
-
- 23 Apr, 2009 1 commit
-
-
Jeffrey Lee authored
Detail: s/ARMops - Fix set/way-based cache ops for cache type WB_CR7_Lx to iterate sets/ways/cache levels properly s/HAL - Fix HAL_InvalidateCache_ARMvF to iterate sets/ways/cache levels properly Admin: Tested on rev C2 beagleboard Version 5.35, 4.79.2.98.2.4. Tagged as 'Kernel-5_35-4_79_2_98_2_4'
-
- 06 Mar, 2009 1 commit
-
-
Jeffrey Lee authored
Detail: s/ARM600 - fix to SyncCodeAreasRange to correctly read cache line length for WB_CR7_Lx caches s/ARMops - Cortex cache handling fixes. Enable L2 cache for Cortex. s/ChangeDyn - VMSAv6 support in AllocateBackingLevel2 s/HAL - Improve RISCOS_InitARM to set/clear correct CP15 flags for ARMv6/v7. VMSAv6 support in code to generate initial page tables. s/NewReset - Extra DebugTX calls during OS startup. Disable pre-HAL Processor_Type for HAL builds. s/VMSAv6 - Main VMSAv6 MMU code - stripped down version of s/ARM600 with support for basic VMSAv6 features. hdr/Options - Use VMSAv6 MMU code, not ARM600. Disable ARM6support since current VMSAv6 code will conflict with it. Admin: Tested basic OS functionality under qemu-omap3 and revision B6 beagleboard. Version 5.35, 4.79.2.98.2.3. Tagged as 'Kernel-5_35-4_79_2_98_2_3'
-
- 21 Feb, 2009 1 commit
-
-
Jeffrey Lee authored
Add support for Cortex cache type. Extend ARM_Analyse to, where appropriate, use CPU feature registers to identify CPU capabilities. Detail: s/ARMops - Support for Cortex multi-level cache (CT_ctype_WB_CR7_Lx). New ARM_Analyse_Fancy to identify CPU capabilities using feature registers. s/HAL - Modify pre-ARMop cache code to handle Cortex-syle caches. s/MemInfo - Replace ARM_flush_TLB macro call with appropriate ARMop to provide Cortex compatability hdr/ARMops - Update list of ARM architectures hdr/CoPro15ops - Deprecate ARM_flush_* macros for HAL kernels, as they are no longer capable of flushing all cache types. ARMops should be used instead. hdr/KernelWS - Add storage space for multi-level cache properties required for new cache cleaning code. Admin: Tested under qemu-omap3. Still unable to verify on real hardware due to lack of appropriate MMU code. However new OMAP3 HAL code that uses similar cache management functions appears to work fine on real hardware. Version 5.35, 4.79.2.98.2.2. Tagged as 'Kernel-5_35-4_79_2_98_2_2'
-