1. 19 Aug, 2009 1 commit
  2. 18 Aug, 2009 6 commits
  3. 16 Aug, 2009 2 commits
    • Matt Fleming's avatar
      sh: Add support for DWARF GNU extensions · cd7246f0
      Matt Fleming authored
      Also, remove the "fix" to DW_CFA_def_cfa_register where we reset the
      frame's cfa_offset to 0. This action is incorrect when handling
      DW_CFA_def_cfa_register as the DWARF spec specifically states that the
      previous contents of cfa_offset should be used with the new
      register. The reason that I thought cfa_offset should be reset to 0 was
      because it was being assigned a bogus value prior to executing the
      DW_CFA_def_cfa_register op. It turns out that the bogus cfa_offset value
      came from interpreting .cfi_escape pseudo-ops (those used by the GNU
      extensions) as CFA_DW_def_cfa ops.
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      cd7246f0
    • Matt Fleming's avatar
      sh: Try again at getting the initial return address for an unwind · b955873b
      Matt Fleming authored
      The previous hack for calculating the return address for the first frame
      we unwind (dwarf_unwinder_dump) didn't always work. The problem was that
      it assumed once it read the rule for calculating the return address,
      there would be no new rules for calculating it. This isn't true because
      the way in which the CFA is calculated can change as you progress
      through a function and the return address is figured out using the
      CFA. Therefore, the way to calculate the return address can change.
      
      So, instead of using some offset from the beginning of
      dwarf_unwind_stack which is just a flakey approach, and instead of
      executing instructions from the FDE until the return address is setup,
      we now figure out the pc in dwarf_unwind_stack() just before we call
      dwarf_cfa_execute_insns().
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      b955873b
  4. 15 Aug, 2009 29 commits
  5. 14 Aug, 2009 2 commits
    • Matt Fleming's avatar
      sh: Set the cfa_offset to 0 if we see a DW_CFA_def_cfa_register op · 180aa6e6
      Matt Fleming authored
      The way that the CFA is calculated can change as we progress through a
      function. If we see a DW_CFA_def_cfa_register op we need to reset the
      frame's cfa_offset value which may have been previously setup.
      Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      180aa6e6
    • Paul Mundt's avatar
      sh: delay slot future proofing via EXPMASK on SH-4A parts. · 7dd6662a
      Paul Mundt authored
      This implements EXPMASK initialization code for SH-4A parts, where it is
      possible to disable compat features that will go away in newer cores.
      Presently this includes disabling support for non-nop instructions in the
      rte delay slot, as well as a sleep instruction being placed in a delay
      slot (neither of which the kernel does any longer). As a result of this,
      any future offenders will have illegal slot exceptions generated for
      them.
      
      Associative writes for the memory-mapped cache array are still left
      enabled, until such a point that special cache operations for SH-4A are
      provided to move off of the current (and rather dated) SH-4 versions.
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      7dd6662a