1. 10 May, 2012 1 commit
    • Ben Avison's avatar
      Support for Raspberry Pi / BCM2835 · 0125023e
      Ben Avison authored
      Detail:
        Falls into two main areas: graphics support and ARM11 core support.
        A work in progress - in many cases the code changes need to be replaced
        with an alternative mechanism which will permit the kernel to still function
        on other platforms. Adrian marked these with "!!!" comments - I have added
        ! directives as well so that they don't get forgotten about.
      Admin:
        Changes received from Adrian Lees. This revision represents the code largely
        as delivered, and is placed on its own branch (forked off from the version
        from which he worked). It is intended for reference. It doesn't build against
        current headers - this is likely to require a merge with the other changes
        to the kernel since that time.
      
      Version 5.35, 4.79.2.98.2.52.2.1. Tagged as 'Kernel-5_35-4_79_2_98_2_52_2_1'
      0125023e
  2. 14 Sep, 2011 1 commit
    • Jeffrey Lee's avatar
      Fix Cache_InvalidateAll_WB_CR7_Lx to do what it says on the tin · af172483
      Jeffrey Lee authored
      Detail:
        s/ARMops - My previous checkin mistakenly changed Cache_InvalidateAll_WB_CR7_Lx so that it cleans and invalidates the cache instead of just invalidating it. This fixes that.
        Also fixed a warning caused by the trailing space going AWOL from the 'cache type register fields' comment.
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.52. Tagged as 'Kernel-5_35-4_79_2_98_2_52'
      af172483
  3. 12 Sep, 2011 2 commits
    • Jeffrey Lee's avatar
      ARMv7 fixes · 2dfd92c1
      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'
      2dfd92c1
    • Ben Avison's avatar
      Kernel updates to support Cortex-A9 CPUs · 0ff2f2dd
      Ben Avison authored
      Detail:
        hdr.ARMops
          added Cortex_A9
        hdr.HALDevice
          added OMAP4 specific device IDs
        hdr.KernelWS
          changed definition of DefIRQ1Vspace for M_CortexA9
        s.ARMops
          added CortexA9 specific code for enabling L2 cache
          added CPUDesc Cortex_A9
        s.NewIRQs
          added CortexA9 specific definition of MaxInterrupts
        s.NewReset
          added M_CortexA9 options
          line 1444: corrected typo
          line 187: commented out unnecessary operation
      Admin:
        Submission from Willi Theiß
      
      Version 5.35, 4.79.2.98.2.50. Tagged as 'Kernel-5_35-4_79_2_98_2_50'
      0ff2f2dd
  4. 22 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Improve Reset_IRQ_Handler · 20c93a96
      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'
      20c93a96
  5. 08 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Add zero page relocation support · 2247d8e9
      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'
      2247d8e9
  6. 07 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Add ESC_Status to list of OS_ReadSysInfo 6 items · 26a09556
      Jeffrey Lee authored
      Detail:
        hdr/OSRSI6, s/Middle - Added ESC_Status to the list of items that OS_ReadSysInfo 6 exports
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.47. Tagged as 'Kernel-5_35-4_79_2_98_2_47'
      26a09556
  7. 06 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Misc kernel updates · 6f468193
      Jeffrey Lee authored
      Detail:
        hdr/ARMops - Reserve OS_PlatformFeatures 0 bit 20 for indicating whether high processor vectors are in use
        s/Kernel - Add local definitions of BYTEWS, LDROSB, STROSB, VDWS macros (previously in Hdr:Macros)
        s/MoreComms - Fix potential buffer overflow when filling error buffer (although GSTrans shouldn't overflow the buffer in the first place?)
      Admin:
        Tested on rev A2 BB-xM
        Requires HdrSrc 1.86
      
      
      Version 5.35, 4.79.2.98.2.46. Tagged as 'Kernel-5_35-4_79_2_98_2_46'
      6f468193
  8. 04 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Correct new OS_ReadSysInfo 6 item numbers · e4f162a3
      Jeffrey Lee authored
      Detail:
        s/Middle - Correct the actual item numbers to match those defined in the header 9and those used in the HAL branch)
        hdr/OSRSI6 - Corrected ROM version numbere where the new items are available from
      Admin:
        Untested!
      
      
      Version 5.35, 4.79.2.98.2.45. Tagged as 'Kernel-5_35-4_79_2_98_2_45'
      e4f162a3
  9. 03 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Add new OS_ReadSysInfo 6 items. Change naming of PublicWS values. · d2c62e16
      Jeffrey Lee authored
      Detail:
        s/Middle - Added some new OS_ReadSysInfo 6 items which are needed by the zero page relocation kernel. Also duplicated some existing entries to avoid conflicts with ROL's allocations.
        hdr/OSRSI6, Makefile - New header listing OS_ReadSysInfo 6 items
        hdr/PublicWS - Duplicated the workspace definitions for &0-&4000, but with a 'Legacy_' prefix to their names. Also added some new entries as needed by the zero page relocation kernel. Once existing modules have been updated to use OS_ReadSysInfo 6 & the Legacy_ definitions, the old defs will be removed.
        hdr/KernelWS - Removed 'Export_' prefix from all the exported workspace values, since the kernel can now use the original names directly
        hdr/Options - Dummy HiProcVecs option so merging things will be a bit cleaner
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.44. Tagged as 'Kernel-5_35-4_79_2_98_2_44'
      d2c62e16
  10. 01 Aug, 2011 1 commit
    • Jeffrey Lee's avatar
      Bring Cortex kernel branch in line with HAL branch · c79c1310
      Jeffrey Lee authored
      Detail:
        Makefile - Now uses ${PERL} for running perl
        s/Kernel - Now uses correct "Bad OS_PlatformFeatures reason code" error number
        s/MemInfo - Updated list of OS_Memory 9 controllers
      Admin:
        OMAP3 ROM compiles OK; untested at runtime
      
      
      Version 5.35, 4.79.2.98.2.43. Tagged as 'Kernel-5_35-4_79_2_98_2_43'
      c79c1310
  11. 31 Jul, 2011 2 commits
    • Jeffrey Lee's avatar
      Add new GPIO device type & OMAP3 GPIO device ID · e14282c7
      Jeffrey Lee authored
      Detail:
        hdr/HALDevice - Added GPIO device type in the Comms group, and an ID for a generic OMAP3 GPIO device
        hdr/GPIODevice - Definition of GPIO device structure. Currently only used to store the type and revision of the main board, so the GPIO manager module can tailor its features appropriately.
        Makefile - Export hdr/GPIODevice
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.42. Tagged as 'Kernel-5_35-4_79_2_98_2_42'
      e14282c7
    • Jeffrey Lee's avatar
      Update the method the Cortex kernel uses to determine the UtilityModule & ROM dates · daa8607f
      Jeffrey Lee authored
      Detail:
        Three main changes:
        * On odd-numbered (i.e. development) versions of the module, the UtilityModule will now take its date from the VersionNum file instead of using a hard-coded date.
        * All build versions now look for the new "extended ROM footer" (as created by romlinker 0.04+) at the end of the ROM image and use it to determine the ROM build date for return by OS_ReadSysInfo 9,2. Failing to find the build date in the footer will cause OS_ReadSysInfo 9,2 to return 0.
        * On odd-numbered versions, OS_Byte 0 will now use the ROM build date (as found in the extended footer) to generate the error block that's returned to the user. This seems OK as the PRM describes OS_Byte 0 as returning the "creation date of the operation system". Plus it's a convenient way of getting the ROM build date into the Switcher, since the switcher uses OS_Byte 0. If the extended footer can't be found (or if the string hasn't been initialised yet, e.g. before Service_PostInit) the code falls back to a hard-coded string containing the date from the VersionNum file.
        File changes:
        Makefile - Updated to not create the obsolete Time+Date file (previously used for the ROM build date)
        Version - Use date from VersionNum file for development builds
        hdr/Options - New UseNewFX0Error variable/option to make it easy to check which OS_Byte 0 variant should be enabled
        hdr/KernelWS - Added new string buffers & extended ROM footer pointer to workspace
        s/Middle - Updated OS_ReadSysInfo 9 code, and added utility functions for searching the extended ROM footer for certain tags
        s/NewReset - Added a couple of calls to initialise the new string buffers just prior to Service_PostInit. This is required since OS_Byte/OS_ReadSysInfo shouldn't enable interrupts, but date conversion relies on the Territory module, which may enable interrupts.
        s/PMF/osbyte - Updated OS_Byte 0 code
      Admin:
        Tested in OMAP ROM, with and without the extended footer present.
      
      
      Version 5.35, 4.79.2.98.2.41. Tagged as 'Kernel-5_35-4_79_2_98_2_41'
      daa8607f
  12. 24 Jul, 2011 1 commit
    • Jeffrey Lee's avatar
      Tweak data abort handler to try and avoid recusrive aborts confusing AMBControl · 8df5d3f5
      Jeffrey Lee authored
      Detail:
        s/VMSAv6 - The code to detect aborting MVA ops now only runs if the aborting instruction wasn't located in application space.
        This is a workaround for an issue where:
        (a) The aborting instruction is in application space
        (b) The aborting instruction is attempting to access memory located in the same page as itself
        (c) That page is not mapped in (despite the fact that code is being executed from it)
        Originally attempting to load the aborting the instruction would have triggered another abort, causing AMBControl to map in the page and resume the first abort handler. The first abort handler would then have determined that it wasn't an MVA op and called AMBControl, only to be told by AMBControl that it wasn't a lazy fixup abort (even though it really was), thus triggering the abort environment handler.
        By ignoring instructions located in application space the second abort is avoided, allowing AMBControl to correctly process the abort.
      Admin:
        Tested on rev A2 BB-xM.
        Fixes issue with DPScan crashing - http://www.freelists.org/post/davidpilling/DPScan-ARMini-crash
        Still need to determine how the ICache is able to become so out of sync with the DCache & page tables.
      
      
      Version 5.35, 4.79.2.98.2.40. Tagged as 'Kernel-5_35-4_79_2_98_2_40'
      8df5d3f5
  13. 08 Jun, 2011 1 commit
    • Jeffrey Lee's avatar
      Kernel fixes for ARMv6 · e5f1d1e5
      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'
      e5f1d1e5
  14. 04 Jun, 2011 1 commit
    • Jeffrey Lee's avatar
      Add hdr.Variables to the C header export, fix ARMv6 issues · b8267d5d
      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'
      b8267d5d
  15. 22 May, 2011 1 commit
    • Jeffrey Lee's avatar
      Update Cortex branch of kernel to support HALSize env variable. Export C version of hdr.OSEntries. · 1bd9c9e0
      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'
      1bd9c9e0
  16. 19 Mar, 2011 1 commit
    • Jeffrey Lee's avatar
      Add ID's for CPUClk HAL device. Trim dead code. · 2f8b5459
      Jeffrey Lee authored
      Detail:
        hdr/HALDevice - Added device type & ID for new CPUClk device, as used by the new OMAP3 HAL/PortableHAL versions.
        s/PMF/osinit - Disable a block of dead code that was getting compiled in.
      Admin:
        Tested on rev C2 BB, rev A2 BB-xM, rev C1 TouchBook
        These changes are needed by the latest OMAP3 HAL & PortableHAL versions.
      
      
      Version 5.35, 4.79.2.98.2.36. Tagged as 'Kernel-5_35-4_79_2_98_2_36'
      2f8b5459
  17. 20 Feb, 2011 2 commits
    • Jeffrey Lee's avatar
      Tweak HAL_ExtMachineID to take the buffer pointer in R0 instead of R1 · 23c9ffec
      Jeffrey Lee authored
      Detail:
        s/Middle, s/PMF/osinit - Kernel now passes the buffer pointer to the HAL in R0 instead of R1, for ATPCS compliance.
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.35. Tagged as 'Kernel-5_35-4_79_2_98_2_35'
      23c9ffec
    • Jeffrey Lee's avatar
      Add OS_ReadSysInfo reason codes 11 (read debug info) & 12 (read extended machine ID) · e42119c8
      Jeffrey Lee authored
      Detail:
        OS_ReadSysInfo 10 is left unimplemented since it's a bit fiddly for us.
        OS_ReadSysInfo 11 is compatible with ROL's implementation, exposing HAL_DebugTX and HAL_DebugRX if the HAL provides them.
        See here for 10,11 docs: http://select.riscos.com/prm/core/osreadsysinfo.html
        OS_ReadSysInfo 12 is a new call to return the 'extended machine ID', to allow the HAL to specify the format & validity of the ID.
        If the HAL responds to the new HAL_ExtMachineID call then it's assumed that no old-style machine ID is present. The Kernel will generate an old-style ID using the contents of the extended ID, and use that with OS_ReadSysInfo 2/5.
        New software should use OS_ReadSysInfo 12 in preference to 2/5.
        s/Middle - Updated OS_ReadSysInfo SWI
        s/PMF/osinit - New old-style machine ID initialisation code
        hdr/HALEntries - Added new HAL_ExtMachineID entry
      Admin:
        Tested on rev A2 BB-xM
      
      
      Version 5.35, 4.79.2.98.2.34. Tagged as 'Kernel-5_35-4_79_2_98_2_34'
      e42119c8
  18. 19 Feb, 2011 1 commit
    • Jeffrey Lee's avatar
      Update OS_IICOp to support multiple IIC buses · 327d3980
      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'
      327d3980
  19. 04 Oct, 2010 1 commit
    • Jeffrey Lee's avatar
      Fix some issues preventing the Cortex kernel from being used on non-Cortex machines · e718080c
      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'
      e718080c
  20. 02 Sep, 2010 1 commit
    • Jeffrey Lee's avatar
      Fix ARMv7 MVA-based cache/TLB op abort handler to be re-entrant · 9aa05feb
      Jeffrey Lee authored
      Detail:
        s/VMSAv6 - The code in DAbPreVeneer that checks for aborting MVA-based cache/TLB ops is now re-entrant.
        This is to cope with the "strange but true" case where a data abort was being triggered by a load/store
        instruction that itself was in an unmapped page.
      Admin:
        Tested on rev C2 beagleboard. Fixes issue with StrongED crashing on load (see http://www.riscosopen.org/forum/forums/5/topics/453)
        Still need to work out why CPU was able to execute code from the unmapped page without triggering a prefetch abort (stale cache entries?)
      
      
      Version 5.35, 4.79.2.98.2.31. Tagged as 'Kernel-5_35-4_79_2_98_2_31'
      9aa05feb
  21. 03 Jul, 2010 1 commit
    • Jeffrey Lee's avatar
      Fix more issues caused by aborting MVA cache/TLB ops on ARMv7 · 9e6b9350
      Jeffrey Lee authored
      Detail:
        s/ARMops - Fixed an instance of 'invalidate branch predictor entry' that should have been 'invalidate all branch predictors'
        s/ChangeDyn - Avoid cleaning the Nowhere page when reallocating memory, to avoid incurring the performance hit of the abort handler, and to avoid AMBControl screwing things up by mapping in pages that we're trying to modify
        s/VMSAv6 - Move MVA cache/TLB abort handler to before ChocolateAMB code, to ensure AMBControl doesn't try mapping in pages for harmless cache/TLB op aborts. Also tweaked code to be a little bit faster.
      Admin:
        Tested on rev C2 beagleboard. No more lockups when moving screen memory around, for now at least.
      
      
      Version 5.35, 4.79.2.98.2.30. Tagged as 'Kernel-5_35-4_79_2_98_2_30'
      9e6b9350
  22. 24 Jun, 2010 1 commit
  23. 23 Jun, 2010 2 commits
    • Jeffrey Lee's avatar
      Minor MMU_ChangingEntries_WB_CR7_Lx fix · 119585a5
      Jeffrey Lee authored
      Detail:
        s/ARMops - previous version of MMU_ChangingEntries_WB_CR7_Lx would behave improperly if cleaning the last page of the address map by neglecting to flush any more than one TLB entry
      Admin:
        Untested!
      
      
      Version 5.35, 4.79.2.98.2.28. Tagged as 'Kernel-5_35-4_79_2_98_2_28'
      119585a5
    • Jeffrey Lee's avatar
      Update Cortex kernel to use correct instruction/memory barriers and to perform... · de8e610e
      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'
      de8e610e
  24. 22 Apr, 2010 1 commit
    • Jeffrey Lee's avatar
      Change default filing system to SCSIFS for CortexA8 machines · 55d55e10
      Jeffrey Lee authored
      Detail:
        s/NewReset - boot filing system now defaults to SCSIFS for the CortexA8 machine type. BeagleBoards, etc. should now be able to run their boot sequence if one is placed on a USB mass storage device.
      Admin:
        Tested on rev C2 beagleboard.
      
      
      Version 5.35, 4.79.2.98.2.26. Tagged as 'Kernel-5_35-4_79_2_98_2_26'
      55d55e10
  25. 20 Mar, 2010 1 commit
    • Jeffrey Lee's avatar
      Add ClearIRQ entry to base HAL device struct, plus a couple of new HAL device IDs & bus types · 736b815d
      Jeffrey Lee authored
      Detail:
        hdr/HALDevice, h/HALDevice - inserted the new 'ClearIRQ' entry point into one of the reserved areas.
        Once the RISC OS-side driver has serviced the device's IRQ the ClearIRQ entry point should be called to allow the HAL device to clear any latched interrupt states in intermediate IRQ controllers (e.g. when using GPIO IRQs on OMAP)
        Since this entry point is new, support for it in existing device drivers isn't guaranteed; HAL device implementations of existing APIs must make sure the use a new major version number to indicate that they require ClearIRQ to be called.
        hdr/HALDevice - added some new bus types to represent the GPMC & L3/L4 interconnects in the OMAP.
        hdr/HALDevice - added ethernet NIC device type & IDs for SMSC9221 & DM9000 NICs
      Admin:
        Tested on rev C2 beagleboard
      
      
      Version 5.35, 4.79.2.98.2.25. Tagged as 'Kernel-5_35-4_79_2_98_2_25'
      736b815d
  26. 28 Feb, 2010 1 commit
    • Jeffrey Lee's avatar
      Update VDU HAL device for new OMAPVideo driver, fix MVA-based cache/TLB... · b213fdd5
      Jeffrey Lee authored
      Update VDU HAL device for new OMAPVideo driver, fix MVA-based cache/TLB maintenance ops aborting on ARMv7, add warning to VDU driver about inconsistent state variables during screen mode changes
      
      Detail:
        hdr/VideoDevice - removed Address2 and Device2 fields as it makes more sense for them to be in the device specific field (which for OMAP3 is a pointer to an OMAP3-specific struct)
        s/VMSAv6 - Modify data abort handler to ignore aborts that are generated by MVA-based cache/TLB maintenance ops. Unlike earlier ARM architectures, MVA-based ops can abort under ARMv7 if the page has no mapping to a physical address.
        s/vdu/vdudriver - Add a warning about VDU driver state variables (particularly CursorAddr) being left in invalid states during the execution of mode changes. This can cause problems if any attempt is made to output to the screen during the mode change (e.g. as a result of an abort)
      Admin:
        Tested on rev C2 beagleboard. Video device changes mean that OMAP3 HAL 0.23 will be needed for ROM compilation to succeed.
      
      
      Version 5.35, 4.79.2.98.2.24. Tagged as 'Kernel-5_35-4_79_2_98_2_24'
      b213fdd5
  27. 20 Feb, 2010 1 commit
    • Jeffrey Lee's avatar
      Fix detection of Philips RTC/NVRAM when MaybeIIC is in use (Cortex branch) · 114948c8
      Jeffrey Lee authored
      Detail:
        s/PMF/i2cutils - Although the code will detect the Philips RTC correctly, it was failing to set the device size in R4, causing CMOS RAM to be misread. This change fixes that.
      Admin:
        Not tested; however it's identical to the fix applied to the HAL branch
      
      
      Version 5.35, 4.79.2.98.2.23. Tagged as 'Kernel-5_35-4_79_2_98_2_23'
      114948c8
  28. 02 Feb, 2010 1 commit
    • Jeffrey Lee's avatar
      Fix bug in InitCMOSCache that could cause CMOS to be erroneously reset if... · 2b35d8c2
      Jeffrey Lee authored
      Fix bug in InitCMOSCache that could cause CMOS to be erroneously reset if NVRAM is of type 'MaybeIIC' (Cortex branch)
      
      Detail:
        s/PMF/i2cutils - Kernel was checking if the full IIC flags word was equal to MaybeIIC instead of just checking if the Provision bits equalled MaybeIIC. Thus if any of the additional flags were set along with MaybeIIC the kernel would have skipped the probing code, skipped the IIC code, and then fallen through to using the (likely unimplemented) HAL interface for initialising the NVRAM cache.
      Admin:
        Fix tested in HAL branch in IOMD build under RPCemu; kernel now takes the correct path for MaybeIIC + ProtectAtEnd.
      
      
      Version 5.35, 4.79.2.98.2.22. Tagged as 'Kernel-5_35-4_79_2_98_2_22'
      2b35d8c2
  29. 24 Jan, 2010 1 commit
    • Jeffrey Lee's avatar
      Migrate 2012 RTC fix to Cortex branch of kernel · 73eefecf
      Jeffrey Lee authored
      Detail:
        s/PMF/osword - Migrate the 2012 RTC fix from the HAL branch to the Cortex branch, plus apply similar fix to the code that handles HAL RTC devices (via new YearLOIsGood flag)
        s/PMF/i2cutils - Update HAL RTC year handling to correctly treat YearLO as either 2-bit int or 2-digit BCD
        hdr/RTCDevice - Add YearLOIsGood flag, revise NeedsYearHelp description
      Admin:
        Tested on rev C2 beagleboard. Code seems to behave as intended.
      
      
      Version 5.35, 4.79.2.98.2.21. Tagged as 'Kernel-5_35-4_79_2_98_2_21'
      73eefecf
  30. 19 Jan, 2010 1 commit
  31. 16 Jan, 2010 1 commit
  32. 05 Dec, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix HAL RTC initialisation in Cortex kernel · fc0b6873
      Jeffrey Lee authored
      Detail:
        LookForHALRTC wasn't initialising R12 to point to the OS Byte workspace before calling CheckYear, and instead relying on the previous value. This resulted in the RTC initialisation breaking once HAL_InitDevices started doing things to corrupt R12.
      Admin:
        Tested on rev C2 beagleboard
      
      
      Version 5.35, 4.79.2.98.2.18. Tagged as 'Kernel-5_35-4_79_2_98_2_18'
      fc0b6873
  33. 29 Nov, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix cortex kernel makefile · 232135e5
      Jeffrey Lee authored
      Detail:
        Makefile rule was missing for VideoDevice header export, preventing it from being exported
      Admin:
        Tested on rev C2 beagleboard. (No, really, I mean it this time!)
      
      
      Version 5.35, 4.79.2.98.2.17. Tagged as 'Kernel-5_35-4_79_2_98_2_17'
      232135e5
  34. 28 Nov, 2009 1 commit
  35. 06 Nov, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix bug when creating code variables via OS_SetVarVal, remove errant line from... · e1e71002
      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'
      e1e71002
  36. 22 Oct, 2009 1 commit
    • Jeffrey Lee's avatar
      Fix error handling for sparse dynamic area resize operations, increase Cortex... · 04f4e5cd
      Jeffrey Lee authored
      Fix error handling for sparse dynamic area resize operations, increase Cortex kernel version number to 5.15
      
      Detail:
        s/ChangeDyn - Swap CMP with TEQ to avoid accidental clobbering of V flag before its state is checked on return from a SWI. Errors encountered during sparse dynamic area resize operations (OS_DynamicArea 9 & 10) should now be reported properly.
        Version - Update kernel version/date to 5.15, to match current HAL version. This change is to allow modules to properly detect whether the kernel has the sparse dynamic area fix - it does not (yet) mean that the Cortex kernel contains all the features of the current development HAL kernel!
      Admin:
        Tested on rev C2 beagleboard
      
      
      Version 5.35, 4.79.2.98.2.14. Tagged as 'Kernel-5_35-4_79_2_98_2_14'
      04f4e5cd