1. 17 8月, 2010 2 次提交
  2. 22 7月, 2010 2 次提交
  3. 14 7月, 2010 15 次提交
  4. 02 7月, 2010 4 次提交
  5. 01 7月, 2010 3 次提交
  6. 16 6月, 2010 1 次提交
  7. 10 6月, 2010 6 次提交
  8. 09 6月, 2010 4 次提交
  9. 03 6月, 2010 1 次提交
    • L
      Fix missing symbols in .rel/.rela.plt sections · dbe6a18d
      Loïc Minier 提交于
      Fix .rel.plt sections in the output to not only include .rel.plt
      sections from the input but also the .rel.iplt sections and to define
      the hidden symbols __rel_iplt_start and __rel_iplt_end around
      .rel.iplt as otherwise we get undefined references to these when
      linking statically to a multilib libc.a.  This fixes the static build
      under i386.
      
      Apply similar logic to rela.plt/.iplt and __rela_iplt/_plt_start/_end to
      fix the static build under amd64.
      Signed-off-by: NLoïc Minier <lool@dooz.org>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      (cherry picked from commit 845f2c28)
      dbe6a18d
  10. 01 6月, 2010 1 次提交
    • T
      target-ppc: fix RFI by clearing some bits of MSR · 7dd007c2
      Thomas Monjalon 提交于
      Since commit 2ada0ed7, "Return From Interrupt" is broken for PPC processors
      because some interrupt specifics bits of SRR1 are copied to MSR.
      
      SRR1 is a save of MSR during interrupt.
      During RFI, MSR must be restored from SRR1.
      But some bits of SRR1 are interrupt-specific and are not used for MSR saving.
      
      This is the specification (ISA 2.06) at chapter 6.4.3 (Interrupt Processing):
      "2. Bits 33:36 and 42:47 of SRR1 or HSRR1 are loaded with information specific
          to the interrupt type.
       3. Bits 0:32, 37:41, and 48:63 of SRR1 or HSRR1 are loaded with a copy of the
          corresponding bits of the MSR."
      
      Below is a representation of MSR bits which are not saved:
      0:15 16:31 32  33:36    37:41      42:47     48:63
      ——— | ——— | — X X X X — — — — — X X X X X X | ————
      0000 0000 |    7   |   8   |   3   |   F    | 0000
      
      History:
      In the initial Qemu implementation (e1833e1f), the mask 0x783F0000 was used for
      saving MSR in SRR1. But all the bits 32:47 were cleared during RFI restoring.
      This was wrong. The commit 2ada0ed7 explains that this breaks Altivec.
      Indeed, bit 38 (for Altivec support) must be saved and restored.
      The change of 2ada0ed7 was to restore all the bits of SRR1 to MSR.
      But it's also wrong.
      
      Explanation:
      As an example, let's see what's happening after a TLB miss.
      According to the e300 manual (E300CORERM table 5-6), the TLB miss interrupts
      set the bits 44-47 for KEY, I/D, WAY and S/L. These bits are specifics to the
      interrupt and must not be copied into MSR at the end of the interrupt.
      With the current implementation, a TLB miss overwrite bits POW, TGPR and ILE.
      
      Fix:
      It shouldn't be needed to filter-out bits on MSR saving when interrupt occurs.
      Specific bits overwrite MSR ones in SRR1.
      But at the end of interrupt (RFI), specifics bits must be cleared before
      restoring MSR from SRR1. The mask 0x783F0000 apply here.
      
      Discussion:
      The bits of the mask 0x783F0000 are cleared after an interrupt.
      I cannot find a specification which talks about this
      but I assume it is the truth since Linux can run this way.
      Maybe it's not perfect but it's better (works for e300).
      Signed-off-by: NThomas Monjalon <thomas@monjalon.net>
      Acked-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      (cherry picked from commit c3d420ea)
      7dd007c2
  11. 29 5月, 2010 1 次提交