1. 01 Jun, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix GraphicsV_StartupMode call. Fix HiProcVecs build. · 60a00c1c
      Jeffrey Lee authored
      Detail:
        s/MemInfo - Fixed typo causing build error with HiProcVecs/zero page relocated kernel
        s/PMF/osinit - Fix the call to GraphicsV_StartupMode to work correctly with non-zero driver numbers
      Admin:
        Tested on BB-xM with high processor vectors
      
      
      Version 5.35, 4.79.2.226. Tagged as 'Kernel-5_35-4_79_2_226'
      60a00c1c
  2. 07 May, 2014 1 commit
    • Jeffrey Lee's avatar
      Be more sensible with how much RAM we put into application space on boot · 8c1b7cdf
      Jeffrey Lee authored
      Detail:
        s/NewReset - During ROM init, keep application space mostly empty instead of attempting to move all RAM into it. This prevents the page order from being reversed, ensuring that in systems with two or more memory speeds the ROM modules get to use the fast RAM instead of the slow RAM (see free pool initialisation logic in InitDynamicAreas)
        After ROM module init, rebalance memory between the free pool and application space so that they each get 50%. This will provide plenty of memory for the boot sequence and any single-tasking stuff (e.g. booting into BASIC), without starving the free pool of memory and breaking any background processes like USB.
      Admin:
        Tested on BB-xM
        Fixes issue where USB devices would fail to initialise properly on some systems due to the boot sequence temporarily locking application space while the free pool is empty
      
      
      Version 5.35, 4.79.2.225. Tagged as 'Kernel-5_35-4_79_2_225'
      8c1b7cdf
  3. 30 Apr, 2014 1 commit
    • Robert Sprowson's avatar
      Fix wildly inaccurate sizes in PhysRamTable when split_block needed · 9aee4207
      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'
      9aee4207
  4. 20 Apr, 2014 2 commits
    • Jeffrey Lee's avatar
      Disable ProcessTransfer code indefinitely · fa2003c1
      Jeffrey Lee authored
      Detail:
        s/ARM600, s/VMSAv6 - Disable ProcessTransfer code for all kernel configurations.
        For VMSAv6 it was definitely broken (needs to be taught about VMSAv6 page tables and ARMv6+ unaligned loads).
        For ARM600 it seems to work OK, but is of no real use as (a) we're always running in 32bit mode and so don't need to worry about processor vector writes and (b) OS_AbortTrap isn't implemented so there's no way for anyone to register an abort handling routine.
        Code is being kept around instead of deleting it straight away just in case there are some hidden knock-ons to disabling it, or we decide to implement our own OS_AbortTrap some day.
      Admin:
        Tested on Iyonix, BB-xM
      
      
      Version 5.35, 4.79.2.223. Tagged as 'Kernel-5_35-4_79_2_223'
      fa2003c1
    • Jeffrey Lee's avatar
      Add OS_Memory 24 implementation. Change OS_ValidateAddress to use it. Fix... · 03d3b37a
      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'
      03d3b37a
  5. 19 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix corrupt L2PT page flags being generated on Iyonix · af2d7844
      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'
      af2d7844
  6. 18 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Change handling of GraphicsV_StartupMode. Fix OS_CheckModeValid for variable framestore case. · 356756a8
      Jeffrey Lee authored
      Detail:
        s/PMF/osinit, s/vdu/vdudriver - Move GraphicsV_StartupMode call from InitialiseMode to TranslateMonitorLeadType. This means (a) it'll only be used if the CMOS mode is set to 'auto' and (b) the returned mode can more easily be read by other modules via OS_ReadSysInfo 1.
        s/vdu/vduswis - Make OS_CheckModeValid act as if we have practically unlimited screen memory if using a GraphcisV driver with variable external framestore. In this case it's the driver should have already OK'd the memory requirements from within the VetMode call issued by FindOKMode - although the check won't be fully valid if we're checking for a shadow mode as the driver currently isn't told how many screen banks are required.
      Admin:
        Tested on Raspberry Pi
        OS_CheckModeValid fix ensures valid modes which require large amounts of VRAM are reported correctly when we're currently in a low-memory mode
      
      
      Version 5.35, 4.79.2.220. Tagged as 'Kernel-5_35-4_79_2_220'
      356756a8
  7. 16 Apr, 2014 1 commit
  8. 14 Apr, 2014 1 commit
    • Robert Sprowson's avatar
      Simplify HAL_IICDevice API · 24b8966d
      Robert Sprowson authored
      The only function to use the abandoned extensions to OS_ClaimDeviceVector, the 2nd & 3rd members of the structure never got used.
      Change uses of HAL_IICDevice to pass in the bus, and expect the device number back.
      Docs updated accordingly.
      
      Version 5.35, 4.79.2.218. Tagged as 'Kernel-5_35-4_79_2_218'
      24b8966d
  9. 07 Apr, 2014 1 commit
  10. 06 Apr, 2014 1 commit
    • Jeffrey Lee's avatar
      Improve Service_DisplayStatus, Service_DisplayChanged functionality · 76984463
      Jeffrey Lee authored
      Detail:
        hdr/VduExt - Define new Service_DisplayChanged reason code for us to issue before anything actually happens. Define new Service_DisplayStatus reason codes for drivers to issue when they change their configuration/capabilities in some way.
        s/Utility - Listen out for Service_DisplayStatus
        s/vdu/vdudriver - When DisplayStatus_Changing/DisplayStatus_Changed is received for the current driver, translate into the appropriate DisplayChanged reason codes so that software which only cares about the current driver doesn't have two sets of service calls to listen out for
        s/vdu/vduswis - When switching driver in OS_ScreenMode 11, issue the new Service_DisplayChanged PreChanging reason code before we update the current GraphicsV driver VDU variable
      Admin:
        Tested in Iyonix ROM softload
      
      
      Version 5.35, 4.79.2.216. Tagged as 'Kernel-5_35-4_79_2_216'
      76984463
  11. 04 Apr, 2014 1 commit
    • John Ballance's avatar
      Correction to code to add GraphicsV_PixelFormats call to · a1e56734
      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'
      a1e56734
  12. 29 Mar, 2014 1 commit
    • Robert Sprowson's avatar
      Move Cache_Lx_ info inside SkippedTable region of workspace · 534344d9
      Robert Sprowson authored
      ClearPhysRAM runs after ARM_Analyse and would wipe out the RAM copies of the various CP15 registers defining which caches are present, leading to the IMB_Full and IMB_Range operations skipping most of their job.
      Space freed below DebuggerSpace by moving the RAM copies of the processor vectors up a bit.
      Tested with a nobbled HAL which doesn't do the RAM clear, inspecting the workspace in a debugger to see it's preserved (only affects VSMAv6 models).
      
      Version 5.35, 4.79.2.214. Tagged as 'Kernel-5_35-4_79_2_214'
      534344d9
  13. 28 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix OS_SpriteOp 41 (read pixel) for 4K colour sprites. Update ECF patterns to... · 7b6ae685
      Jeffrey Lee authored
      Fix OS_SpriteOp 41 (read pixel) for 4K colour sprites. Update ECF patterns to work sensibly in true colour modes.
      
      Detail:
        s/vdu/vdugrafg - Change SetupSprModeData to calculate SprReadNColour from log2bpp instead of the NColour mode variable - fixes the alpha component being lost when using OS_SpriteOp 41 to read from 4K colour sprites with alpha channels
        s/vdu/vdudriver - Change SetCol30 to generate more sensible ECF colour blocks when in true colour modes. Previously it would treat each byte of the 8 byte ECF pattern as a separate row, and replicate the byte 4 times to produce one colour word per row. However this isn't so great for true colour modes, especially if you have an alpha channel which needs specific values. So to fix the issue, take inspiration from how Paint assumed the ECF patterns worked, and treat 16bpp modes as being a 1x4 pattern and 32bpp modes as being a 1x2 pattern
      Admin:
        Tested on BB-xM
        OS_SpriteOp 41 fix fixes Paint colour picker always returning 0 alpha when picking from 4K ARGB sprites
        ECF change fixes Paint's masked sprite background ECF pattern to display properly in true colour modes
      
      
      Version 5.35, 4.79.2.213. Tagged as 'Kernel-5_35-4_79_2_213'
      7b6ae685
  14. 25 Mar, 2014 1 commit
    • Ben Avison's avatar
      Fix long-standing, insidious memory management bug · 1a6dab91
      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'
      1a6dab91
  15. 23 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix ProcessTransfer bug with LDM · dd9c5400
      Jeffrey Lee authored
      Detail:
        s/ARM600, s/VMSAv6 - When processing an LDM which wasn't the "user mode registers" form, the initialisation of lr was being skipped, resulting in the registers being loaded from garbage addresses. Shuffle things around slightly so that the branch to label 34 works as intended.
      Admin:
        Issue spotted by Willi Theiss
        Builds, but untested
      
      
      Version 5.35, 4.79.2.211. Tagged as 'Kernel-5_35-4_79_2_211'
      dd9c5400
  16. 09 Mar, 2014 1 commit
    • Jeffrey Lee's avatar
      ModeFlag_GreyscalePalette handling improvements. Issue service calls on... · 7fbbad3d
      Jeffrey Lee authored
      ModeFlag_GreyscalePalette handling improvements. Issue service calls on certain GraphicsV events. Sprite tweaks and fixes.
      
      Detail:
        hdr/VduExt - Add reason codes used by Service_DisplayChanged & Service_DisplayStatus
        s/vdu/vdugrafg - Remove dependency on SpriteReason_BadReasonCode; just use the size of our lookup table instead. Alter SpriteOp lookup table so that unimplemented ops return an error instead of doing nothing. Fix PutSprite incorrectly using the slow GCOL action plotter if a request was made to plot a sprite using its mask but the sprite has none.
        s/vdu/vdugrafl - Update screen redirection handling to set ModeFlag_GreyscalePalette if switching output to a sprite with a greyscale palette or a RISC OS Select alpha mask. Restore the flag to its correct value when restoring screen output.
        s/vdu/vdupalxx - Update ModeFlag_GreyscalePalette in realtime as the palette is changed
        s/vdu/vduswis - Issue Service_DisplayChanged during OS_ScreenMode 11. Issue Service_DisplayStatus during OS_ScreenMode 65 & 66.
      Admin:
        Tested on Iyonix, BB-xM
      
      
      Version 5.35, 4.79.2.210. Tagged as 'Kernel-5_35-4_79_2_210'
      7fbbad3d
  17. 26 Jan, 2014 1 commit
    • Robert Sprowson's avatar
      Add support for LDRSB to data abort handler · f6c764dd
      Robert Sprowson authored
      ARM600:
      Decode LDRSB, do the sign extend, and fault all the other loads and stores not understood.
      VMSAv6:
      As the loads and stores not understood are now vetted properly, it should be safe to UseProcessTransfer (previously they'd have been disassembled incorrectly).
      Paste in LDRSB code from ARM600.
      Fix dubious looking access of CurrentGraphicsVDriver from WsPtr.
      
      Tested briefly on StrongARM.
      
      Version 5.35, 4.79.2.209. Tagged as 'Kernel-5_35-4_79_2_209'
      f6c764dd
  18. 19 Jan, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix some exception preveneers going to the wrong place when high processor vectors are enabled · 55118466
      Jeffrey Lee authored
      Detail:
        s/Kernel - UndPreVeneer, PAbPreVeneer and AdXPreVeneer all need to take into account the location of ZeroPage. In reality UndPreVeneer is the only one that matters, as the other two aren't really used.
      Admin:
        Tested on Raspberry Pi with high processor vectors
        Undefined instructions now generate errors correctly
      
      
      Version 5.35, 4.79.2.208. Tagged as 'Kernel-5_35-4_79_2_208'
      55118466
  19. 01 Jan, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix dodgy mode changes on Raspberry Pi. Fix crash when switching to a driver... · 48deb52a
      Jeffrey Lee authored
      Fix dodgy mode changes on Raspberry Pi. Fix crash when switching to a driver which uses DA 2 if DA 2 isn't already large enough.
      
      Detail:
        s/vdu/vdudriver:
        - Fix bug in ModeChangeSub which caused the VariableFramestore flag to be ignored, resulting in unreliable mode changes on the Raspberry Pi.
        - Changed InitialiseMode to reset a few more variables when preparing to use a driver which uses DA 2. Without this the screen DA handler will likely crash when attempting to resize the DA for the initial mode change.
      Admin:
        Tested on Raspberry Pi
      
      
      Version 5.35, 4.79.2.207. Tagged as 'Kernel-5_35-4_79_2_207'
      48deb52a
  20. 19 Dec, 2013 1 commit
    • Jeffrey Lee's avatar
      Miscellaneous fixes · 9c592cbc
      Jeffrey Lee authored
      Detail:
        s/MemInfo - Fix OS_Memory 0 physical-to-logical conversion returning bad addresses for most cases due to R5 being modified by physical_to_ppn (bug introduced in revision 4.4.2.20)
        s/vdu/vdudriver - Fix some VDU driver variables not being initialised correctly when switching GraphicsV driver
        s/vdu/vdugrafv - Fix handling of VSync events from GraphicsV drivers other than driver zero
        s/vdu/vduswis - Fix abort when OS_ScreenMode 11 is passed a bad driver number
      Admin:
        Tested on Raspberry Pi
        There still seems to be a bug lurking somewhere when switching to a GraphicsV driver that uses DA2; the system will crash horribly unless DA2 is already a suitable size for the initial mode change
      
      
      Version 5.35, 4.79.2.206. Tagged as 'Kernel-5_35-4_79_2_206'
      9c592cbc
  21. 17 Dec, 2013 2 commits
    • Jeffrey Lee's avatar
      Fix CAO pointer being reset incorrectly when calling OS_ExitAndDie with zero... · af73a980
      Jeffrey Lee authored
      Fix CAO pointer being reset incorrectly when calling OS_ExitAndDie with zero page relocation enabled
      
      Detail:
        s/MoreSWIs - OS_ExitAndDie now correctly sets the CAO to zero when ZeroPage is non-zero
      Admin:
        Tested on BB-xM with high processor vectors
        Issue originally spotted by Sprow
      
      
      Version 5.35, 4.79.2.205. Tagged as 'Kernel-5_35-4_79_2_205'
      af73a980
    • Jeffrey Lee's avatar
      Strip out some old build switches · 9d96c0ab
      Jeffrey Lee authored
      Detail:
        hdr/Options, s/ArthurSWIs, s/ChangeDyn, s/PMF/KbdDrA1, s/PMF/key, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdugrafhal, s/vdu/vdugrafv, s/vdu/vdumodes, s/vdu/vduwrch:
        - Strip out DoingVdu build switch (did nothing)
        - Strip out Japanese16BitSound switch (did nothing)
        - Strip out MakeModeSelectorsForModeNUmbers switch (altered the mode list structures, but there wasn't any code to do anything with the new data)
        - Strip out remaining uses of UseGraphicsV switch (now hardwired to {TRUE})
        - Strip out ShadowROM switch (altered FixedAreasTable to show the shadow mapping, but code to create the mapping is missing)
        - Strip out PollMouse switch (old Archimedes-era debug/development option)
      Admin:
        Tested on BB-xM
        Builds to same binary as previous version
      
      
      Version 5.35, 4.79.2.204. Tagged as 'Kernel-5_35-4_79_2_204'
      9d96c0ab
  22. 15 Dec, 2013 1 commit
    • Jeffrey Lee's avatar
      Assorted GraphicsV improvements · 694750de
      Jeffrey Lee authored
      Detail:
        This set of changes:
        * Adds basic support for multiple GraphicsV drivers, by way of some new OS_ScreenMode reason codes for registering/deregistering, selecting and enumerating drivers (11, 64-68)
        * Tidies up handling of HAL video calls so that the HAL calls will be transformed into a bona fide GraphicsV driver if they're implemented
        * Changes handling of 16bpp gamma table entries so that they're sent to GraphicsV in a generic form instead of in a VIDC-specific form
        * Adds a new GraphicsV call and defines new VIDC list items to allow GraphicsV drivers to utilise the new pixel formats
        File changes:
        * h/VIDCList, hdr/VIDCList, Makefile - Add new header export containing VIDC list type 3 definitions, to avoid repeated definitions in other components
        * Resources/UK/Messages - Add new GraphicsV/OS_ScreenMode error strings and some missing processor type strings
        * hdr/KernelWS - Clean up some pre-GraphicsV definitions, and add new workspace locations for storing the current GraphicsV driver number and the driver list
        * hdr/Options - Remove obsolete InverseTextTransparency option
        * hdr/VduExt - Add VDU variable 192 for storing GraphicsV driver number (same as ROL's VideoV driver number). Remove old 'Flag_*' mode flag definitions (use new 'ModeFlag_*' defintions instead). Add new OS_ScreenMode reason codes.
        * s/ARM600, s/VMSAv6, s/vdu/vdu23, s/vdu/vdugrafa, s/vdu/vdugrafd, s/vdu/vdupalxx, s/vdu/vdupointer, s/vdu/vduwrch - Strip out pre-GraphicsV code. Update GraphicsV code to use correct driver number.
        * s/ArthurSWIs - Pass the default GraphicsV claimant the VduDriverWorkSpace instead of ZeroPage
        * s/Getall - Add Hdr:VIDCList and s/vdu/VduGrafHAL to list of GETs
        * s/NewIRQs - Remove HAL VSync IRQ initialisation, is now handled by grafvhal. Remove old HAL VsyncIRQ entry point, all VSyncs are now handled by VsyncIRQ_ExtEntry.
        * s/PMF/osbyte - Stop OS_Byte 19 waiting forever if no video driver is active
        * s/PMF/osinit - Remove HAL VSync IRQ initialisation, is now handled by grafvhal
        * s/vdu/vducursoft - Use new workspace variable names and flag names
        * s/vdu/vdudecl - Remove old HALDAG_* definitions, GVDAG_* definitions are used instead. Add definition of the per-driver workspace structure and flags.
        * s/vdu/vdudriver - Remove pre-GraphicsV code. Update InitialiseMode to check for and initialise a HAL driver. Use cached driver features word in a few places instead of calling GraphicsV each time. Update PalIndexTable to disable VIDC mangling of 16bpp gamma tables.
        * s/vdu/vdugrafv, s/vdu/vdugrafhal - HAL<->GraphicsV code split off into its own file (vdugrafhal). Default GraphicsV claimant now only deals with VSync events for the active driver.
        * s/vdu/vdumodes - Get rid of old VIDC List type 3 definiton; now in hdr/VIDCList
        * s/vdu/vduswis - Added OS_ScreenMode reason codes 11 and 64-68 for registering, deregistering, selecting and enumerating GraphicsV drivers. Update mode set code to not bother checking if the driver supports the pixel format; instead we assume that the driver's vet mode call will do the check for us.
      Admin:
        Tested in Tungsten, IOMD, OMAP3 & BCM2835 ROMs
        Requires HdrSrc-2_38 and updated video driver modes
      
      
      Version 5.35, 4.79.2.203. Tagged as 'Kernel-5_35-4_79_2_203'
      694750de
  23. 20 Nov, 2013 1 commit
    • Robert Sprowson's avatar
      Migrate RTC driver out of the kernel · 574ab818
      Robert Sprowson authored
      The kernel will use RTC_Read and RTC_Write to access the hardware clock, while maintaining the software clock as before.
      Makefile: header export is now in the RTC module's sources
      KernelWS: remove RTCFitted flag
      NewReset: sync the time after the module init
      i2cutils: deleted clock chip code
      osinit: move OS_ResyncTime into PMF/realtime
      realtime: mostly packages up ordinals and calls the respective SWI
      
      Tested on IOMD softload.
      
      Version 5.35, 4.79.2.202. Tagged as 'Kernel-5_35-4_79_2_202'
      574ab818
  24. 16 Nov, 2013 1 commit
    • Robert Sprowson's avatar
      Little kernel patches · 4ca0d4bb
      Robert Sprowson authored
      hdr/ExportVals: the copyright header insertion got a bit confused with some of the file contents
      TickEvents.s: a bad merge from Ursula branch 4.1.4.2 to trunk 4.2 left behind unmatched push/pull where TickIrqReenter had been removed
      hdr/Options & NewIRQs.s: collapse remaining TickIrqReenter switches
      osinit.s: when ZeroPage is in a top bit set address only the last buffer pointer would get zeroed
      
      Tip offs from eagle eyed Tim Baldwin.
      
      Version 5.35, 4.79.2.201. Tagged as 'Kernel-5_35-4_79_2_201'
      4ca0d4bb
  25. 28 Oct, 2013 1 commit
    • Robert Sprowson's avatar
      Fix to RTC initial read when year hasn't rolled · 04a4b880
      Robert Sprowson authored
      There's an exit case from CheckYear which skips the actual clock read, so add an explicit call to RTCToRealTime for that case (cf. OS_ResyncTime).
      Remove use of ARMv2 era MULTIPLY macro, just use MUL.
      Tested on IOMD with a HAL RTC.
      
      Version 5.35, 4.79.2.200. Tagged as 'Kernel-5_35-4_79_2_200'
      04a4b880
  26. 27 Oct, 2013 1 commit
    • Robert Sprowson's avatar
      Fixes to NeedsYearHelp clock case · f36c5ed3
      Robert Sprowson authored
      Want LSR not ROR otherwise in the need help + HAL + 2 bit case the IIC address in R1 comes out as &800000A1.
      Added HAL device ids for a couple more RTC devices.
      
      Version 5.35, 4.79.2.199. Tagged as 'Kernel-5_35-4_79_2_199'
      f36c5ed3
  27. 13 Oct, 2013 1 commit
    • Jeffrey Lee's avatar
      More alpha mask read/write fixes · 031b994d
      Jeffrey Lee authored
      Detail:
        s/vdu/vdugrafh - Fixed SpriteMaskAddr to use the right Log2BPC value when generating addressed for alpha masks. Fix ReadPixelMask to return 255 when sprite has now mask, but mode word has wide mask bit set.
      Admin:
        Tested on BB-xM
        Reading/writing alpha mask pixels now works properly across the whole image
      
      
      Version 5.35, 4.79.2.198. Tagged as 'Kernel-5_35-4_79_2_198'
      031b994d
  28. 06 Oct, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix plotting of RISC OS 5 type sprites and masks. Fix hang when attempting to... · 00df471b
      Jeffrey Lee authored
      Fix plotting of RISC OS 5 type sprites and masks. Fix hang when attempting to report "alpha mask not supported" error. Fix reading/writing of alpha mask pixels.
      
      Detail:
        s/vdu/vdugrafg - Fixed PutSprite and PlotMask to correctly deal with RISC OS 5 type sprite mode words. Fix infinite loops in PutSpriWideMaskErr casued by R14 getting trashed.
        s/vdu/vdugrafh - Fixed SpriteMaskAddr malfunctioning when trying to calculate addresses in alpha masks. Minor ReadPixelMask & WritePixelMask optimisations.
        s/vdu/vduswis - Fixed OS_ScreenMode 13 & 14 to count "G2" as a valid colour specifier.
      Admin:
        Tested on BB-xM
        Should hopefully fix the random hangs reported on the forums when trying to use sprites with alpha masks
      
      
      Version 5.35, 4.79.2.197. Tagged as 'Kernel-5_35-4_79_2_197'
      00df471b
  29. 28 Sep, 2013 1 commit
    • Robert Sprowson's avatar
      Clean up of RISCOS_IICOpV · 8a15939d
      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'
      8a15939d
  30. 07 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Fix errors building for pre-ARMv7 · 0f6da0f6
      Jeffrey Lee authored
      Detail:
        s/vdu/vduswis - Add an extra LTORG that's within range of LDR r14,=&1FFF instruction
      Admin:
        Tested in Iyonix softload
        Fixes build errors for Tungsten ROM, should fix IOMD + BCM2835 too.
      
      
      Version 5.35, 4.79.2.195. Tagged as 'Kernel-5_35-4_79_2_195'
      0f6da0f6
  31. 06 Aug, 2013 1 commit
    • Jeffrey Lee's avatar
      Add support for the new RISC OS 5 style sprite mode word. Add partial support... · 57d1a29d
      Jeffrey Lee authored
      Add support for the new RISC OS 5 style sprite mode word. Add partial support for alpha channel sprite masks. Implement OS_ScreenMode reasons 13-15
      
      Detail:
        ECFShift/ECFYOffset:
        - hdr/PublicWS - Add ECFShift and ECFYOffset to list of public exports (SpriteExtend was using hardcoded values). Rearrange exports so that VduWorkspace exports are now labelled as such.
        - hdr/KernelWS - Make sure ECFShift & ECFYOffset match their exported locations
        - hdr/OSRSI6, s/Middle - Add OS_ReadSysInfo 6 items 83 & 84, for reading ECFYOffset and ECFShift locations
        Mode flags/VDU variables:
        - Makefile - Add hdr/VduExt to the C header exports
        - hdr/VduExt - Get rid of NotRVVTBarWobblyBits macro and defined VDU variables manually so that Hdr2H will handle them. Begin replacing overly generic 'Flag_*' mode flag definitions with 'ModeFlag_*' instead. Define new flags as required by the new screen/sprite modes. Add OS_ScreenMode reason codes and mode selector format (from s.vdu.vdudecl)
        - NewModes/NEWF2, NewModes/OldPSSrc, NewModes/PSSrc, s.vdu.vdu23, s.vdu.vducursoft, s.vdu.vdudriver, s.vdu.vdugrafg, s.vdu.vdugrafj, s.vdu.vdugrafl, s.vdu.vdumodes, s.vdu.vdupal10, s.vdu.vdupal20, s.vdu.vdupalette, s.vdu.vdupalxx, s.vdu.vduwrch - Renaming Flag_* to ModeFlag_*
        - s.vdu.vdudecl - Remove OS_ScreenMode reason codes & mode selector format definitions; these are now in hdr/VduExt. Flag_* -> ModeFlag_* renaming.
        - s.vdu.vdupalxx - Apply a greyscale palette in PV_SetDefaultPalette if the greyscale mode flag is set
        New sprite types:
        - s.vdu.vdudriver - Extend GenerateModeSelectorVars to deal with the wide mask flag, 64K sprites, and the new RISC OS 5 sprite mode word format.
        - s.vdu.vdugrafdec - Store more information about the sprite in the SprReadNColour ... SprLog2BPC block.
        - s.vdu.vdugrafg - Update SpriteVecHandler to be able to detect whether RISC OS 5 format sprites are allowed palettes. Update SetupSprModeData to store the extra sprite info that's defined in vdugrafdec. Update PutSprite to fault any sprites with wide masks - SpriteExtend must be used for that (once implemented!)
        - s.vdu.vdugrafh - Update WritePixelColour to avoid temporary poking of NColour VDU variable for 8bpp sprites. Correctly replicate data when writing to RISC OS 5 format sprites. Update ReadPixelMask, WritePixelMask, SpriteMaskAddr, GetMaskspWidth to deal with wide masks. Delete obsolete bounce_new_format_masks routine.
        - s.vdu.vdugrafi - Comment updated to reflect new reality
        - s.vdu.vdugrafj - Get rid of unused code block in CreateHeader/PostCreateHeader. Update SanitizeSGetMode to generate RISC OS 5 style sprite mode words where applicable. Update DecideMaskSize to rely on GetMaskspWidth for calculating mask width.
        - s.vdu.vdugrafl - Update SwitchOutputToSprite/SwitchOutputToMask to deal with the new sprite formats. Allow PushModeInfoAnyMonitor to fail.
        - s.vdu.vduswis - Extended OS_ReadModeVariable to cope with new sprite types
        Misc:
        - s.vdu.vdudriver - Fixed bug with VIDCList copying where any -1 value in the structure would terminate the copy, instead of only -1 as a control item number
        - s.vdu.vduswis - Implemented OS_ScreenMode 13 (Mode string to specifier), 14 (mode specifier to string), and 15 (set mode by string). Mostly as per ROL's specs, but minus support for teletext attributes, and plus support for new RISC OS 5 attributes (L... layout specifier, 4096 & 24bpp packed modes, etc.)
        - s.vdu.vduwrch - Pick correct default text colours for the new modes
      Admin:
        Tested on BB-xM
        Part of an implementation of the Extended Framebuffer Format spec:
        http://www.riscosopen.org/wiki/documentation/show/Extended%20Framebuffer%20Format%20Specification
      
      
      Version 5.35, 4.79.2.194. Tagged as 'Kernel-5_35-4_79_2_194'
      57d1a29d
  32. 31 Jul, 2013 1 commit
    • Robert Sprowson's avatar
      Announce an RTC sync with a service call · b4d7b729
      Robert Sprowson authored
      Step changes in RealTime are now accompanied by a service call. Note the initial read isn't announced, mainly because this is before the module chain is started so nobody's listening anyway.
      
      Version 5.35, 4.79.2.193. Tagged as 'Kernel-5_35-4_79_2_193'
      b4d7b729
  33. 12 Jul, 2013 1 commit
  34. 01 Jun, 2013 2 commits
  35. 27 May, 2013 1 commit
    • Robert Sprowson's avatar
      Allow bursting during ClearPhysRAM on StrongARM · adbb31f1
      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'
      adbb31f1
  36. 07 Apr, 2013 2 commits
    • Jeffrey Lee's avatar
      Adjust handling of OS_ReadSysInfo 4 · f71d7180
      Jeffrey Lee authored
      Detail:
        s/Middle - If the HAL provides an extended machine ID, make sure OS_ReadSysInfo 4 doesn't return a MAC address. This is because the old-style machine ID which the MAC is extracted from will be completely synthetic and is so known not to contain a MAC (even if it may look like it does)
      Admin:
        Tested on BB-xM, Raspberry Pi
      
      
      Version 5.35, 4.79.2.188. Tagged as 'Kernel-5_35-4_79_2_188'
      f71d7180
    • Robert Sprowson's avatar
      Header changes for OMAP4 · ec9b62c3
      Robert Sprowson authored
      GPIODevice: defines for OMAP4 targets
      KernelWS: bump up the IICBus_Count from 3 to 4
      
      Version 5.35, 4.79.2.187. Tagged as 'Kernel-5_35-4_79_2_187'
      ec9b62c3