1. 13 12月, 2005 1 次提交
    • L
      [ARM] 3201/1: PXA27x: Prevent hangup during resume due to inadvertedly... · 1ee9530a
      Lothar Wassmann 提交于
      [ARM] 3201/1: PXA27x: Prevent hangup during resume due to inadvertedly enabling MBREQ (replaces: 3198/1)
      
      Patch from Lothar Wassmann
      
      The patch makes sure, that the ouptut functions of pins are restored
      before restoring the Alternat Function settings, preventing pins from
      being intermediately configured for undefined or unwanted alternate
      functions.
      
      Here is the original comment:
      I've got a PXA270 system that uses GPIO80 as nCS4. This system did
      hang on resume. Digging into the problem I found that the processor
      stalled immediately when restoring the GAFR2_U register which restored
      the alternate function for GPIO80. Since the GPDR registers were
      restored after the GAFR registers, the offending GPIO was configured
      as input at this point.
      Thus the alternate function that was in effect after restoring the
      GAFR was in fact the input function "MBREQ" instead of the output
      function "nCS4". The "PXA27x Processor Family Developer's Manual"
      (Footnote in Table 6-1 on page 6-3) states that:
      "The MBREQ alternate function must not be enabled until the PSSR[RDH]
      bit field is cleared. For more details, see Table 3-15, "PSSR Bit
      Definitions" on page 3-71."
      
      There is another note in the Developer's Manual (chapter 24.4.2
      "GPIO operation as Alternate Function" on page 24-4)
      stating that:
      "Configuring a GPIO for an alternate function that is not defined for
      it causes unpredictable results."
      
      Since some GPIOs have no input function defined, and to prevent
      inadvertedly programming the MBREQ function on some pin, the GAFR
      registers should be restored after the GPDR registers have been
      restored.
      
      Additional provisions have to be made when the MBREQ function is
      actually required. The corresponding GAFR bits should not be restored
      with the regular GAFR restore, but must be set only after the PSSR
      bits have been cleared.
      Signed-off-by: NLothar Wassmann <LW@KARO-electronics.de>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      1ee9530a
  2. 10 12月, 2005 1 次提交
    • N
      [ARM] 3200/1: Singlestep over ARM BX and BLX instructions using ptrace fix · 22f975f4
      Nikola Valerjev 提交于
      Patch from Nikola Valerjev
      
      Single stepping an application using ptrace() fails over ARM instructions BX and BLX.
      
      Steps to reproduce:
      
      Compile and link the following files
      
      main.c
      -----
      void foo();
      int main() {
          foo();
          return 0;
      }
      
      foo.s
      -----
      	.text
      	.globl foo
      foo:
      	BX LR
      
      Using ptrace() functionality, run to main(), and start singlestepping.
      Singlestep over \"BX LR\" instruction won\'t transfer the control back
      to main, but run the code to completion.
      
      This problems seems to be in the function get_branch_address() in
      arch/arm/kernel/ptrace.c. The function doesn\'t seem to recognize BX
      and BLX instructions as branches. BX and BLX instructions can be used
      to convert from ARM to Thumb mode if the target address has the low
      bit set. However, they are also perfectly legal in the ARM only mode.
      Although other things in the kernel seem to indicate that only ARM
      mode is accepted (and not Thumb), many compilers will generate BX
      and BLX instructions even when generating ARM only code.
      Signed-off-by: NNikola Valerjev <nikola@ghs.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      22f975f4
  3. 09 12月, 2005 1 次提交
  4. 05 12月, 2005 4 次提交
  5. 04 12月, 2005 11 次提交
  6. 03 12月, 2005 12 次提交
  7. 02 12月, 2005 10 次提交