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. 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
  3. 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
  4. 15 Jun, 2009 1 commit
    • Ben Avison's avatar
      Fix bugs and inefficiencies revealed by unaligned data audit · 8a9e694c
      Ben Avison authored
      Detail:
        s.PMF.i2cutils line 454: this LDR of byte values was harmless (bits 8
          upwards are discarded later) but slower than an LDRB on ARMv6 or later.
        s.PMF.i2cutils line 556: should have loaded RTCFitted using LDRB. Looks
          like effect would have been to reduce utilisation of CMOS cache.
        s.vdu.vduswis line 1500: mistakenly accessing ExternalFramestore using LDR.
          I don't think the intention was to prevent the screen DA being resized
          while screen memory was claimed, but that was the effect.
        s.vdu.vduwrch line 3106: this LDR of a 1-byte variable was harmless (only
          used for testing bit 4) but slower than an LDRB on ARMv6 or later.
        CPU version is no longer specified in the makefile - it's better to inherit
        it from the build environment now that we actually set it appropriately.
      Admin:
        Built and briefly tested.
      
      Version 5.35, 4.79.2.98.2.9. Tagged as 'Kernel-5_35-4_79_2_98_2_9'
      8a9e694c
  5. 17 May, 2009 1 commit
    • Ben Avison's avatar
      Miscellaneous v6-related updates · 9d9aa41b
      Ben Avison authored
      Detail:
       * Stopped calling the broken abort fixup code when running under VMSAv6.
         Might be desirable to update it, possibly farmed out to a separate module -
         still need to think about this.
       * Unaligned load optimisations can now be disabled by the global NoUnaligned
         flag for testing purposes.
       * Extended OS_ReadUnsigned to permit reading of 64-bit unsigned integers.
         See Docs.ReadUnsigned for more details. Also sped it up by using MLA
         (or UMLAL) for most digits rather than repeated addition.
       * Bugfix is OS_GSRead: an uninitialised r0 was being passed to
         OS_ReadUnsigned, causing undesirable effects on rare occasions.
      Admin:
        Tested on a rev B7 beagleboard.
      
      Version 5.35, 4.79.2.98.2.8. Tagged as 'Kernel-5_35-4_79_2_98_2_8'
      9d9aa41b
  6. 10 May, 2009 3 commits
    • Jeffrey Lee's avatar
      Disable paged scrolling when using the debug terminal · 76cbfa84
      Jeffrey Lee authored
      Detail:
        s/vdu/vduwrch - Modify PageTest to never use paged scrolling when DebugTerminal is true (since serial terminals aren't able to send shift up/down messages)
      Admin:
        Tested on rev C2 beagleboard.
      
      
      Version 5.35, 4.79.2.98.2.7. Tagged as 'Kernel-5_35-4_79_2_98_2_7'
      76cbfa84
    • Ben Avison's avatar
      Unaligned loads/stores optimised for ARMv6+ · 70865f8b
      Ben Avison authored
      Detail:
        Having scanned the kernel source for unaligned load code fragments which
        would abort on ARMv6 and v7 and not having found any, I took the opportunity
        to give them build-time switches to use unaligned LDR((S)H)/STR(H)
        instructions if built for a new enough platform. Also added a couple of
        cases of LDRSB that will benefit v4 CPUs and a few instances of the v6
        SXTH instruction, but since objasm doesn't yet understand it (and when it
        does, not everyone will have upgraded) they are currently written as
        DCI statements.
        Most of the changes are to OS_Word handlers, which are notorious in that
        their input/output block is not word-aligned.
      Admin:
        Not tested, but it should at least build.
      
      Version 5.35, 4.79.2.98.2.6. Tagged as 'Kernel-5_35-4_79_2_98_2_6'
      70865f8b
    • Jeffrey Lee's avatar
      Assorted kernel fixes for ARMv6/ARMv7 · ca8f36f5
      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'
      ca8f36f5
  7. 23 Sep, 2005 1 commit
  8. 04 May, 2005 1 commit
  9. 02 Nov, 2004 1 commit
    • John Ballance's avatar
      several mode: · 208da9fd
      John Ballance authored
           1: default ticker based vsync generated whenever no device present to do so
           2: graphicsv handling and spec updated to use the hi 8 bits in the
              reason code (R4) to define the display number. Kernel only knows
              of display 0
      Detail:
      Admin:
           tested castle  castle added ip
      
      
      Version 5.35, 4.79.2.81. Tagged as 'Kernel-5_35-4_79_2_81'
      208da9fd
  10. 29 Oct, 2004 1 commit
  11. 18 Jun, 2004 1 commit
    • Ben Avison's avatar
      Added four new VDU variables. · f0e2e714
      Ben Avison authored
      Detail:
        174: left border size
        175: bottom border size
        176: right border size
        177: top border size
      Admin:
        Not tested.
      
      Version 5.35, 4.79.2.68. Tagged as 'Kernel-5_35-4_79_2_68'
      f0e2e714
  12. 06 May, 2004 1 commit
    • Kevin Bracey's avatar
      * HAL can choose to limit amount of screen memory to allocate · 0f6941a8
      Kevin Bracey authored
        [Not fully implemented - for now leaves at least 16MB free if only
        one RAM area; was 1MB].
      * Added HAL_USBControllerInfo, HAL_MonitorLeadID and HAL_Video_Render.
      * Added HAL->OS call OS_IICOpV.
      * OS_MMUControl now allows independent control of I and C bits.
      * Added facility to deactivate keyboard debounce (magic word "NoKd" in
        R2 in KeyV 0).
      * Fixed problem with RAM amounts not a multiple of 4MB.
      * Supremacy bit (in VDU 19) now sets all 8 bits of supremacy.
      * Added PaletteV 14 (reads gamma tables).
      * Added Supremacy transfer functions (like gamma correction, but for
        supremacy). Allows easy global supremacy effects in a mode-independent
        fashion. Controlled with PaletteV 15,16.
      * Added modes 50-53 (320x240, 1,2,4,8bpp). Intended for small LCD.
      * Added 13.5kHz versions of TV modes (selected by Hdr:Machine).
      * Upped desktop version to 5.06.
      
      Version 5.35, 4.79.2.66. Tagged as 'Kernel-5_35-4_79_2_66'
      0f6941a8
  13. 31 Mar, 2003 1 commit
  14. 27 Jan, 2003 1 commit
    • Kevin Bracey's avatar
      Support for keys held down in the HAL at power on. · 2c1c85d9
      Kevin Bracey authored
      *Configure ANYTHINGsize was broken due to not setting R0 to ReadUnsigned
      IIC ack message uninternationalised
      OS_Memory was saying we only had 4M of RAM
      VDU4 scrolling when output was switched to sprite was causing corruption
      on use of CTRL-J and CTRL-K
      Default SystemSize CMOS set to 32k
      
      Version 5.35, 4.79.2.55. Tagged as 'Kernel-5_35-4_79_2_55'
      2c1c85d9
  15. 18 Dec, 2002 1 commit
    • Ben Avison's avatar
      Added 256-colour version of the (high-resolution only) teletext code, and... · 12055c33
      Ben Avison authored
      Added 256-colour version of the (high-resolution only) teletext code, and support for teletext when hardware scroll is disabled. Both are required for Tungsten.
      
      Turned off the module init/final service calls, since we still don't have an
      allocation for them.
      Upped the OS version number to 5.01.
      
      Version 5.35, 4.79.2.53. Tagged as 'Kernel-5_35-4_79_2_53'
      12055c33
  16. 30 Nov, 2002 1 commit
    • Ben Avison's avatar
      Commit of kernel as featured in release 5.00. · 9664c93b
      Ben Avison authored
      Detail:
        Lots of changes since last version, at least the following:
        * Updated OS timestamp, removed alpha status
        * Negative INKEY OS version changed to &AA
        * GraphicsV is now alocated vector number &2A
        * ROM moved up to &FC000000
        * Max application slot increased to 512 Mbytes (for now)
        * Max size of RMA increased to 256 Mbytes
        * RMA is now first-created dynamic area (so it gets lowest address after
          top of application slot)
        * OS_Memory 10 reimplemeted
        * New OS_ReadSysInfo 6 values 18-22 added
        * OS_ReadSysInfo 8 gains flag bit to indicate soft power-off
        * Misc internal top-bit-set-address fixes
        * *ChangeDynamicArea can take sizes in megabytes or gigabytes
        * Magic word "&off" in R0 passed to OS_Reset powers down if possible
        * Added acceleration: block copy; CLS; text window scroll up; rectangle
          fill
        * Disabled LED flashing in page mode (liable to crash)
        * Masked sprite plot and VDU 5 text avoids reading the screen if possible
        * Framestore made USR mode accessible
        * Fix for VDU 5,127 bug - now relies on font definitions being in extreme
          quarters of memory, rather than bottom half
        * Allocated 64-bit OS_Convert... SWIs
        * IIC errors use allocated error numbers
        * Looks for Dallas RTC before Philips RTC because we're using a Philips
          NVRAM device with the same ID
        * Fix to bug that meant the oscillator in the Dallas RTC wasn't enabled
        * Default mouse type (USB) changed to allocated number
        * Ram disc max size increased to 128 Mbytes (Ursula merge) and made
          cacheable for StrongARMs (not XScale)
        * Branch through zero handler now works in USR mode, by use of a
          trampoline in the system stack to allow PC-relative register storage
        * Address exception handler changed to not use 0 as workspace
        * OS_Memory 13 extended to allow specification of cacheability and access
          privileges
        * Added OS_Memory 16 to return important memory addresses
        * RISCOS_MapInIO() takes cacheable flag in bit 3, access permissions in
          bits 10 and 11, doubly-mapped flag in bit 20, and access permissions
          specified flag in bit 21
        * Bug fix in last version for application abort handlers didn't quite
          work; register shuffle required
        * "Module is not 32-bit compatible" error now reports the module name
        * Default configured language changed from 10 to 11 (now Desktop again)
      
      Version 5.35, 4.79.2.51. Tagged as 'Kernel-5_35-4_79_2_51'
      9664c93b
  17. 07 Oct, 2002 1 commit
  18. 18 Jun, 2001 1 commit
    • Mike Stephens's avatar
      Reimplement enhancements to kernel Dynamic Area support from · 3f877936
      Mike Stephens authored
      Ursula. Quite a hairy code merge really, so let's hope it is
      worth it to someone. What you get (back after 2 or 3 years):
      - much more efficient for largish numbers of DAs (relevance
        to current build = approx 0)
      - fancy reason codes to support fast update of
        Switcher bar display (relevance = 0)
      - support for clamped maximum area sizes, to avoid address
        space exhaustion with big memory (relevance = 0)
      - better implementation of shrinkable DAs, performance
        wise (if lots of DAs, relevance = approx 0)
      - support for 'Sparse' DAs. Holey dynamic areas, Batman!
        (relevance, go on someone use the darned things)
      Moderately development tested on HAL/32bit ARM9 desktop.
      Note the Switcher should be compiled to use the new
      reason codes 6&7, for fabled desktop builds.
      
      Also, during this work, so I could see the wood for the
      trees, redid some source code clean up, removing pre-Medusa
      stuff (like I did about 3 years ago on Ursula, sigh). That's
      why loads...
      3f877936
  19. 07 Mar, 2001 1 commit
  20. 01 Mar, 2001 1 commit
  21. 12 Jan, 2001 1 commit
    • Mike Stephens's avatar
      kernel now attempts to substitute video mode numbers in face of h/w with... · 6a293f53
      Mike Stephens authored
      kernel now attempts to substitute video mode numbers in face of h/w with limited bits-per-pixel support (not tested yet)
      
      HAL_API document added - early draft only, of interest to those
      writing or modifying HALs for new h/w
      ARMop_API document added - early draft only, of interest only
      to those modifying kernel to support new ARM cores
      *** polite comments on HAL_API welcome ***
      
      Version 5.35, 4.79.2.15. Tagged as 'Kernel-5_35-4_79_2_15'
      6a293f53
  22. 20 Oct, 2000 1 commit
  23. 17 Oct, 2000 1 commit
  24. 16 Oct, 2000 3 commits
  25. 10 Oct, 2000 1 commit
  26. 06 Oct, 2000 1 commit
  27. 05 Oct, 2000 3 commits
  28. 03 Oct, 2000 1 commit
  29. 15 Sep, 2000 1 commit
    • Kevin Bracey's avatar
      * Converted to building with ObjAsm (but still a single object file using ORG). · 49836a59
      Kevin Bracey authored
      * Added ARM_IMB and ARM_IMBRange SWIs as recommended by ARMv5.
      * Some early prototype HAL bits popped in - a lot of source restructuring still
        to come.
      * New debug target creates an AIF image with debug information, and translates
        this into an ASCII object file for the 16702B logic analyser.
      
      Version 5.35, 4.79.2.1. Tagged as 'Kernel-5_35-4_79_2_1'
      49836a59
  30. 28 Jun, 2000 1 commit
    • Ben Avison's avatar
      Added compile-time support for full-resolution teletext characters in teletext... · e87eeeca
      Ben Avison authored
      Added compile-time support for full-resolution teletext characters in teletext emulation mode (MODE 7) for that authentic BBC Micro feel.
      
        Also introduced a few useful teletext control features via VDU 23,18.
        Unrelatedly, fixed *ScreenLoad to work for interlaced displays.
      
      Detail:
        The new typeface is designed on a 16x20 grid (previously we had used 8x10),
        so it uses a screen resolution of 640x500 pixels (rather than 320x250).
        Since we have been unable to source a genuine teletext font, and since
        examination of a BBC Micro suggests that the genuine font may not have been
        a power-of-2 pixels wide, I have designed one specially, based upon the one
        supplied in Zap distributions (a 12x20 font). Rather than increase the
        amount of workspace that the kernel requires for cacheing graphic
        characters, it now generates them on the fly, as they are required; this
        should only add about 25% to their rendering time.
      
        The new VDU 23 sequences are as follows:
      
        VDU 23,18,0,mode,0,0,0,0,0,0
          Switc...
      e87eeeca
  31. 12 May, 2000 1 commit
    • Ben Avison's avatar
      Improvement to the new callback functionality from version 5.27. · 88c888e9
      Ben Avison authored
      Detail:
        In the previous version, Portable_Idle was called each time that the callback
        chain was examined. This is only desirable in cases where we're polling the
        keyboard, waiting before scrolling the text window; in the normal case, it's
        an unnecessary slow-down. Now fixed to only call Portable_Idle if we're
        waiting for a key up/down/timeout.
      Admin:
        Not tested.
      
      Version 5.28. Tagged as 'Kernel-5_28'
      88c888e9
  32. 10 May, 2000 1 commit
    • Ben Avison's avatar
      Callbacks can now go off when the text window scrolls (newline or line wrap). · 1896d276
      Ben Avison authored
        In particular, they can go off when Scroll Lock etc have frozen the text
        output.
      Detail:
        The callback chain is examined at least once per line scroll. Additionally,
        it is examined repeatedly while Scroll Lock or Ctrl-Shift are acting, while
        idling between lines if Ctrl is held down, and while waiting for the Shift
        key to be pressed at the bottom of a screen when in page mode.
        The opportunity is also taken to call Portable_Idle after each time that the
        callback chain has been examined.
      Admin:
        Not tested.
      
      Version 5.27. Tagged as 'Kernel-5_27'
      1896d276
  33. 17 Apr, 2000 1 commit
  34. 13 Apr, 2000 1 commit
    • Kevin Bracey's avatar
      * Run-time emulator detection added (no need for separate images). Needs an · 36ba4cb5
      Kevin Bracey authored
        RPCEm update.
      * Register allocation in default ErrorV handler fixed - problems occured when
        callbacks were triggered on way out.
      * OS_Byte 19 didn't manipulate interrupt disable flag correctly in 26-bit
        builds.
      * Stray bit of debugging left in sprite code many years ago removed.
      
      Version 5.23. Not tagged
      36ba4cb5