[ Simon Horman ]
* Fix booting on PReP machines (Closes: #348040) powerpc-relocate_code.patch svn path=/dists/trunk/linux-2.6/; revision=5501
This commit is contained in:
parent
0dafa87448
commit
4ac88bd66b
|
@ -50,7 +50,12 @@ linux-2.6 (2.6.15-3) UNRELEASED; urgency=low
|
|||
* Drop merged patch:
|
||||
- sparc64-atyfb-xl-gr-final.patch
|
||||
|
||||
-- maximilian attems <maks@sternwelten.at> Sun, 15 Jan 2006 12:12:10 +0100
|
||||
[ Simon Horman ]
|
||||
* Fix booting on PReP machines
|
||||
(Closes: #348040)
|
||||
powerpc-relocate_code.patch
|
||||
|
||||
-- Simon Horman <horms@verge.net.au> Tue, 17 Jan 2006 18:01:17 +0900
|
||||
|
||||
linux-2.6 (2.6.15-2) unstable; urgency=low
|
||||
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
commit aed9c6ccb87d96c333bd6ae631d9e90f3b6d7271
|
||||
tree 65366c1ddedfbec62cb422686a5c6b0d734ce5e5
|
||||
parent 2fb9d2063626374dd8a2514b3a730facac8235d8
|
||||
author Paul Janzen <pcj@linux.sez.to> Wed, 04 Jan 2006 21:40:48 -0800
|
||||
committer Paul Mackerras <paulus@samba.org> Mon, 09 Jan 2006 15:47:08 +1100
|
||||
|
||||
[PATCH] ppc32: Put cache flush routines back into .relocate_code section
|
||||
|
||||
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: Paul Janzen <pcj@linux.sez.to>
|
||||
Signed-off-by: Paul Mackerras <paulus@samba.org>
|
||||
|
||||
diff --git a/arch/ppc/boot/common/util.S b/arch/ppc/boot/common/util.S
|
||||
index c96c9f8..368ec03 100644
|
||||
--- a/arch/ppc/boot/common/util.S
|
||||
+++ b/arch/ppc/boot/common/util.S
|
||||
@@ -234,7 +234,8 @@ udelay:
|
||||
* First, flush the data cache in case it was enabled and may be
|
||||
* holding instructions for copy back.
|
||||
*/
|
||||
-_GLOBAL(flush_instruction_cache)
|
||||
+ .globl flush_instruction_cache
|
||||
+flush_instruction_cache:
|
||||
mflr r6
|
||||
bl flush_data_cache
|
||||
|
||||
@@ -279,7 +280,8 @@ _GLOBAL(flush_instruction_cache)
|
||||
* Flush data cache
|
||||
* Do this by just reading lots of stuff into the cache.
|
||||
*/
|
||||
-_GLOBAL(flush_data_cache)
|
||||
+ .globl flush_data_cache
|
||||
+flush_data_cache:
|
||||
lis r3,cache_flush_buffer@h
|
||||
ori r3,r3,cache_flush_buffer@l
|
||||
li r4,NUM_CACHE_LINES
|
|
@ -3,3 +3,4 @@
|
|||
+ mtdpart-redboot-fis-byteswap.patch
|
||||
- sparc64-atyfb-xl-gr-final.patch
|
||||
+ 2.6.15.1.patch
|
||||
+ powerpc-relocate_code.patch
|
||||
|
|
Loading…
Reference in New Issue