1. 23 Mar, 2013 1 commit
    • Ben Avison's avatar
      First of a two-part update of Hdr:CPU.Generic* · 154397df
      Ben Avison authored
        Changes split into two parts to make the diffs readable. In this part:
        * Simplified the inclusion of Hdr:Machine.<Machine> - all current builds
          require a new enough version of objasm that the bug with GET directives
          inside conditionals appears to no longer apply.
        * A number of macros used to have large switches of almost-identical code
          depending upon whether an optional register was defined or not - these
          are now simplified by using a local variable to hold the register.
        * RETURNS is no longer wrapped in :LNOT: No26bitCode, since it could still
          be useful for exception return, non-transient callback handlers etc.
          However, its presence is still a warning sign for non-32-bit-compatible
          code, so it emits a warning unless you add an extra argument to indicate
          that you've vetted that the code is 32-bit safe.
        * Operator precedence bug fixed in SCPSR from Generic32 copied across to
          Generic26 (applies if bits to set/clear were given as expressions).
        * Conflicting set and clear bits in SCPSR now produce an error in both
          Generic26 and Generic32 (previously was only a warning in Generic26).
        * Added the same flag bit check in WritePSRc in Generic26 as already
          existed in Generic32.
        * Some comments reformatted for consistency.
        * Uses of mymrs replaced with MRS, and unconditional or flag-only uses of
          mymsr macro replaced with MSR (other ones remain to deal with the
          StrongARM bug).
        * RETURNVC and RETURNVS no longer accept NV condition code.
        * Removed BKPT macro (now implemented natively in objasm).
        Update originally from Rob Sprowson, bugfixed and split into two parts by me.
      Version 2.25. Tagged as 'HdrSrc-2_25'
  2. 16 Feb, 2012 1 commit
    • Jeffrey Lee's avatar
      Add protection against StrongARM conditional MSR CPSR_c bug · 6dfb8d83
      Jeffrey Lee authored
        hdr/Machine/Machine - Add new StrongARM_MSR_bug global that's TRUE when we're targeting a StrongARM-compatible machine type.
        Corrected No26bitCode and No32bitCode comments to say that it's all about whether we're supporting 26/32bit processor modes, not about whether we're targetting 26/32bit only processors
        hdr/CPU/Generic32 - Modify macros to protect against StrongARM MSR bug where appropriate.
        Tested with IOMD softload on StrongARM RiscPC.
        Fixes issue with Maestro crashing due to MSR bug creating a stack imbalance in SoundScheduler.
      Version 1.96. Tagged as 'HdrSrc-1_96'
  3. 17 May, 2009 1 commit
    • Ben Avison's avatar
      Updates to Hdr:CPU.Generic32 · cab36754
      Ben Avison authored
        Added definitions of new CPSR bits and moitor mode in newer ARM cores
        Used in OMAP3 builds, but needs to be on the trunk because the Debugger
        module will use the definitions in other builds.
      Version 1.68. Tagged as 'HdrSrc-1_68'
  4. 29 Oct, 2002 1 commit
  5. 11 May, 2001 1 commit
    • Ben Avison's avatar
      Some maintenance of Hdr:CPU.GenericXX. · d7d188f6
      Ben Avison authored
        * Added register definitions for the new registers in those wacky new ARM2
          chips, r8_fiq and r9_fiq.
        * Added abort and undefined mode register definitions using the ARM ARM
          standardised suffix of _abt and _und (previously we only had _abort and
          _undef versions).
        * Added some sanity checking of the fields parameter to the RestPSR macro,
          to help warn the unwary of the effect of compiling No32bitCode.
        Changes appear to function as desired. Debug builds of MPEGDriver actually
        require those extra register definitions.
      Version 1.23. Tagged as 'HdrSrc-1_23'
  6. 18 Oct, 2000 1 commit
    • Stewart Brodie's avatar
      Fixed typo in TOGPSRR macro. · 03baed78
      Stewart Brodie authored
        $regtop instead of $regtmp meant that 32-bit builds would fail to
          assemble correctly.
        Required by PDModules 4.45 and later
      Version 1.05. Tagged as 'HdrSrc-1_05'
  7. 15 Sep, 2000 1 commit
  8. 11 Jul, 2000 1 commit
  9. 01 Jun, 2000 1 commit
    • Stewart Brodie's avatar
      Added TOGPSRR macro · 4d65da6c
      Stewart Brodie authored
        TOGPSRR does the same as TOGPSR except that the bits to toggle
          are held in a register.
        Hdr:Sprite contains declarations that are mistranslated by Hdr2H 1.1.
          Hdr2H has been updated to handle these declarations and is first
          present in RiscOS/Library 0.45.
        Required by DualSerial 0.24 and later.
        Requires Library 0.45 to export a correct C version of Hdr:Sprite
      Version 0.88. Tagged as 'HdrSrc-0_88'
  10. 17 May, 2000 1 commit
    • Kevin Bracey's avatar
      * Fixed 32-bit macros broken by $oldpsr extension to SCPSR. · 01df3260
      Kevin Bracey authored
      * Added $oldpsr extension to SETPSR, CLRPSR and TOGPSR.
      * Removed reliance on ObjAsm default macro parameters in $oldpsr extension.
      * Replaced SavePSR macro calls with literal mrs instructions in 32-bit macros.
      Version 0.84. Tagged as 'HdrSrc-0_84'
  11. 15 May, 2000 1 commit
    • Stewart Brodie's avatar
      SavePSR functionality incorporated into some other macros. · 71b4a945
      Stewart Brodie authored
        Improved some of the PSR wiggling macros with an optional extra
          register into which to save the old PSR.  Saves an extra MRS
          instruction in some cases.
        Some macros changed to invoke SavePSR macro instead of having a copy
          of the macro body.
        Required by ScrBlank 2.30.
      Version 0.83. Tagged as 'HdrSrc-0_83'
  12. 04 Apr, 2000 1 commit
  13. 02 Dec, 1999 2 commits
  14. 26 Nov, 1999 1 commit
    • Stewart Brodie's avatar
      Merge of 32-bit capable macros to trunk. · 559a684e
      Stewart Brodie authored
        The 26-bit and 32-bit capable macros have been added.
        Header files choose which set of macros to use based on <Machine>.
        If you want the new macros, include "Hdr:APCS.<APCS>" in addition
          to the usual inclusions at the top of assembler files.
        Choices are based on the settings of macros No32bitCode and
          No26bitCode.  By default, all existing machines define these
          as {TRUE} and {FALSE} respectively.  This yields the same macros
          as before (tested in Customer F 5 build) and should yield code which
          functions on RISC OS 3.1.  Any other combination of settings is
          untested at this time.
        New assembler code should use the macros FunctionEntry, Return et al
          to ensure that they build correctly.
        New assembler code should be written to not require flag preservation
          across internal function calls and to not assume it on external
          function calls where it is possible to do so.  DO NOT simply replace
          "MOVS pc, lr" with "MOV pc, lr" as this doesn't work properly.
          Replace "MOVS pc, lr" with "Return ,LinkNotStacked"
        Do not write code which simply masks out &FC000003 from pc or some kind
          or pc originated value (eg. on r14 to attempt to remove the PSR flags
          from it.  Use the RemovePSRFromReg macro instead.
        Tested with Customer F 5 build.
        Requires FPEmulator 4.11
        Requires Portable 0.65 (or Portable75 0.04)
        Required by any new or modified assembler code in future, pretty much.
          Such components may not necessarily specify a dependency on this
          or any other later version of HdrSrc.
      Version 0.63. Tagged as 'HdrSrc-0_63'