1. 01 Mar, 2006 1 commit
    • Tom Rini's avatar
      [PATCH] ppc32: Put cache flush routines back into .relocate_code section · c238fdc7
      Tom Rini authored
      In 2.6.14, we had the following definition of _GLOBAL() in
      include/asm-ppc/processor.h:
      
      #define _GLOBAL(n)\
              .stabs __stringify(n:F-1),N_FUN,0,0,n;\
              .globl n;\
      n:
      
      In 2.6.15, as part of the great powerpc merge, we moved this definition to
      include/asm-powerpc/ppc_asm.h, where it appears (to 32-bit code) as:
      
      #define _GLOBAL(n)      \
              .text;          \
              .stabs __stringify(n:F-1),N_FUN,0,0,n;\
              .globl n;       \
      n:
      
      Mostly, this is fine.  However, we also have the following, in
      arch/ppc/boot/common/util.S:
      
              .section ".relocate_code","xa"
      [...]
      _GLOBAL(flush_instruction_cache)
      [...]
      _GLOBAL(flush_data_cache)
      [...]
      
      The addition of the .text section definition in the definition of
      _GLOBAL overrides the .relocate_code section definition.  As a result,
      these two functions don't end up in .relocate_code, so they don't get
      relocated correctly, and the boot fails.
      
      There's another suspicious-looking usage at kernel/swsusp.S:37 that
      someone should look into.  I did not exhaustively search the source
      tree, though.
      
      The following is the minimal patch that fixes the immediate problem.
      I could easily be convinced that the _GLOBAL definition should be
      modified to remove the ".text;" line either instead of, or in addition
      to, this fix.
      Signed-off-by: default avatarPaul Janzen <pcj@linux.sez.to>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
      c238fdc7
  2. 10 Feb, 2006 25 commits
  3. 06 Feb, 2006 2 commits
  4. 31 Jan, 2006 12 commits