diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-10-27 01:11:44 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-10-27 01:11:44 +0000 | 
| commit | 5fcd5782397ad98fe79dca7eca7d2347734910e4 (patch) | |
| tree | 53828971a2858df4c905d47cf0751ed2b5da5746 | |
| parent | a6257782ac7c3b9ada77662b3190c0255c913324 (diff) | |
ppc: add missing symbols for building with a newer toolchain
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18179 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | target/linux/generic-2.6/patches-2.6.30/032-ppc_gcc_build_fix.patch | 226 | ||||
| -rw-r--r-- | target/linux/generic-2.6/patches-2.6.31/031-ppc_gcc_build_fix.patch | 226 | 
2 files changed, 452 insertions, 0 deletions
| diff --git a/target/linux/generic-2.6/patches-2.6.30/032-ppc_gcc_build_fix.patch b/target/linux/generic-2.6/patches-2.6.30/032-ppc_gcc_build_fix.patch new file mode 100644 index 000000000..3151eee26 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.30/032-ppc_gcc_build_fix.patch @@ -0,0 +1,226 @@ +GCC 4.4.x looks to be adding support for generating out-of-line register +saves/restores based on: + +http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01678.html + +This breaks the kernel build as we'd have to link with libgcc to get the +implementation of the register save/restores. + +To workaround this issue, we just stole the save/restore code from gcc +and simplified it down for our needs (integer only).  We only do this if +PPC32 as gcc makes believe the linker on ppc64 will deal with this and +only if CONFIG_CC_OPTIMIZE_FOR_SIZE is set (thus -Os). + +Signed-off-by: Kumar Gala <[EMAIL PROTECTED]> +--- + +If someone using cutting edge toolchains for ppc64 could test and make +sure if we enable CONFIG_CC_OPTIMIZE_FOR_SIZE things work that would be +nice. + +- k + + arch/powerpc/kernel/misc_32.S   |   77 +++++++++++++++++++++++++++ + arch/powerpc/kernel/ppc_ksyms.c |  111 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 188 insertions(+), 0 deletions(-) + +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S +@@ -813,3 +813,80 @@ relocate_new_kernel_end: + relocate_new_kernel_size: + 	.long relocate_new_kernel_end - relocate_new_kernel + #endif ++ ++#if defined(CONFIG_PPC32) && defined(CONFIG_CC_OPTIMIZE_FOR_SIZE) ++/* Routines for saving integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer save area.  */ ++ ++_GLOBAL(_savegpr_14)   stw     14,-72(11)      /* save gp registers */ ++_GLOBAL(_savegpr_15)   stw     15,-68(11) ++_GLOBAL(_savegpr_16)   stw     16,-64(11) ++_GLOBAL(_savegpr_17)   stw     17,-60(11) ++_GLOBAL(_savegpr_18)   stw     18,-56(11) ++_GLOBAL(_savegpr_19)   stw     19,-52(11) ++_GLOBAL(_savegpr_20)   stw     20,-48(11) ++_GLOBAL(_savegpr_21)   stw     21,-44(11) ++_GLOBAL(_savegpr_22)   stw     22,-40(11) ++_GLOBAL(_savegpr_23)   stw     23,-36(11) ++_GLOBAL(_savegpr_24)   stw     24,-32(11) ++_GLOBAL(_savegpr_25)   stw     25,-28(11) ++_GLOBAL(_savegpr_26)   stw     26,-24(11) ++_GLOBAL(_savegpr_27)   stw     27,-20(11) ++_GLOBAL(_savegpr_28)   stw     28,-16(11) ++_GLOBAL(_savegpr_29)   stw     29,-12(11) ++_GLOBAL(_savegpr_30)   stw     30,-8(11) ++_GLOBAL(_savegpr_31)   stw     31,-4(11) ++                       blr ++ ++/* Routines for restoring integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer restore area.  */ ++ ++_GLOBAL(_restgpr_14)   lwz     14,-72(11)      /* restore gp registers */ ++_GLOBAL(_restgpr_15)   lwz     15,-68(11) ++_GLOBAL(_restgpr_16)   lwz     16,-64(11) ++_GLOBAL(_restgpr_17)   lwz     17,-60(11) ++_GLOBAL(_restgpr_18)   lwz     18,-56(11) ++_GLOBAL(_restgpr_19)   lwz     19,-52(11) ++_GLOBAL(_restgpr_20)   lwz     20,-48(11) ++_GLOBAL(_restgpr_21)   lwz     21,-44(11) ++_GLOBAL(_restgpr_22)   lwz     22,-40(11) ++_GLOBAL(_restgpr_23)   lwz     23,-36(11) ++_GLOBAL(_restgpr_24)   lwz     24,-32(11) ++_GLOBAL(_restgpr_25)   lwz     25,-28(11) ++_GLOBAL(_restgpr_26)   lwz     26,-24(11) ++_GLOBAL(_restgpr_27)   lwz     27,-20(11) ++_GLOBAL(_restgpr_28)   lwz     28,-16(11) ++_GLOBAL(_restgpr_29)   lwz     29,-12(11) ++_GLOBAL(_restgpr_30)   lwz     30,-8(11) ++_GLOBAL(_restgpr_31)   lwz     31,-4(11) ++                       blr ++ ++/* Routines for restoring integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer restore area.  */ ++ ++_GLOBAL(_restgpr_14_x) lwz     14,-72(11)      /* restore gp registers */ ++_GLOBAL(_restgpr_15_x) lwz     15,-68(11) ++_GLOBAL(_restgpr_16_x) lwz     16,-64(11) ++_GLOBAL(_restgpr_17_x) lwz     17,-60(11) ++_GLOBAL(_restgpr_18_x) lwz     18,-56(11) ++_GLOBAL(_restgpr_19_x) lwz     19,-52(11) ++_GLOBAL(_restgpr_20_x) lwz     20,-48(11) ++_GLOBAL(_restgpr_21_x) lwz     21,-44(11) ++_GLOBAL(_restgpr_22_x) lwz     22,-40(11) ++_GLOBAL(_restgpr_23_x) lwz     23,-36(11) ++_GLOBAL(_restgpr_24_x) lwz     24,-32(11) ++_GLOBAL(_restgpr_25_x) lwz     25,-28(11) ++_GLOBAL(_restgpr_26_x) lwz     26,-24(11) ++_GLOBAL(_restgpr_27_x) lwz     27,-20(11) ++_GLOBAL(_restgpr_28_x) lwz     28,-16(11) ++_GLOBAL(_restgpr_29_x) lwz     29,-12(11) ++_GLOBAL(_restgpr_30_x) lwz     30,-8(11) ++_GLOBAL(_restgpr_31_x) lwz     0,4(11) ++                       lwz     31,-4(11) ++                       mtlr    0 ++                       mr      1,11 ++                       blr ++#endif +--- a/arch/powerpc/kernel/ppc_ksyms.c ++++ b/arch/powerpc/kernel/ppc_ksyms.c +@@ -188,3 +188,114 @@ EXPORT_SYMBOL(__mtdcr); + EXPORT_SYMBOL(__mfdcr); + #endif + EXPORT_SYMBOL(empty_zero_page); ++ ++#if defined(CONFIG_PPC32) && defined(CONFIG_CC_OPTIMIZE_FOR_SIZE) ++void _savegpr_14(void); ++void _savegpr_15(void); ++void _savegpr_16(void); ++void _savegpr_17(void); ++void _savegpr_18(void); ++void _savegpr_19(void); ++void _savegpr_20(void); ++void _savegpr_21(void); ++void _savegpr_22(void); ++void _savegpr_23(void); ++void _savegpr_24(void); ++void _savegpr_25(void); ++void _savegpr_26(void); ++void _savegpr_27(void); ++void _savegpr_28(void); ++void _savegpr_29(void); ++void _savegpr_30(void); ++void _savegpr_31(void); ++void _restgpr_14(void); ++void _restgpr_15(void); ++void _restgpr_16(void); ++void _restgpr_17(void); ++void _restgpr_18(void); ++void _restgpr_19(void); ++void _restgpr_20(void); ++void _restgpr_21(void); ++void _restgpr_22(void); ++void _restgpr_23(void); ++void _restgpr_24(void); ++void _restgpr_25(void); ++void _restgpr_26(void); ++void _restgpr_27(void); ++void _restgpr_28(void); ++void _restgpr_29(void); ++void _restgpr_30(void); ++void _restgpr_31(void); ++void _restgpr_14_x(void); ++void _restgpr_15_x(void); ++void _restgpr_16_x(void); ++void _restgpr_17_x(void); ++void _restgpr_18_x(void); ++void _restgpr_19_x(void); ++void _restgpr_20_x(void); ++void _restgpr_21_x(void); ++void _restgpr_22_x(void); ++void _restgpr_23_x(void); ++void _restgpr_24_x(void); ++void _restgpr_25_x(void); ++void _restgpr_26_x(void); ++void _restgpr_27_x(void); ++void _restgpr_28_x(void); ++void _restgpr_29_x(void); ++void _restgpr_30_x(void); ++void _restgpr_31_x(void); ++EXPORT_SYMBOL(_savegpr_14); ++EXPORT_SYMBOL(_savegpr_15); ++EXPORT_SYMBOL(_savegpr_16); ++EXPORT_SYMBOL(_savegpr_17); ++EXPORT_SYMBOL(_savegpr_18); ++EXPORT_SYMBOL(_savegpr_19); ++EXPORT_SYMBOL(_savegpr_20); ++EXPORT_SYMBOL(_savegpr_21); ++EXPORT_SYMBOL(_savegpr_22); ++EXPORT_SYMBOL(_savegpr_23); ++EXPORT_SYMBOL(_savegpr_24); ++EXPORT_SYMBOL(_savegpr_25); ++EXPORT_SYMBOL(_savegpr_26); ++EXPORT_SYMBOL(_savegpr_27); ++EXPORT_SYMBOL(_savegpr_28); ++EXPORT_SYMBOL(_savegpr_29); ++EXPORT_SYMBOL(_savegpr_30); ++EXPORT_SYMBOL(_savegpr_31); ++EXPORT_SYMBOL(_restgpr_14); ++EXPORT_SYMBOL(_restgpr_15); ++EXPORT_SYMBOL(_restgpr_16); ++EXPORT_SYMBOL(_restgpr_17); ++EXPORT_SYMBOL(_restgpr_18); ++EXPORT_SYMBOL(_restgpr_19); ++EXPORT_SYMBOL(_restgpr_20); ++EXPORT_SYMBOL(_restgpr_21); ++EXPORT_SYMBOL(_restgpr_22); ++EXPORT_SYMBOL(_restgpr_23); ++EXPORT_SYMBOL(_restgpr_24); ++EXPORT_SYMBOL(_restgpr_25); ++EXPORT_SYMBOL(_restgpr_26); ++EXPORT_SYMBOL(_restgpr_27); ++EXPORT_SYMBOL(_restgpr_28); ++EXPORT_SYMBOL(_restgpr_29); ++EXPORT_SYMBOL(_restgpr_30); ++EXPORT_SYMBOL(_restgpr_31); ++EXPORT_SYMBOL(_restgpr_14_x); ++EXPORT_SYMBOL(_restgpr_15_x); ++EXPORT_SYMBOL(_restgpr_16_x); ++EXPORT_SYMBOL(_restgpr_17_x); ++EXPORT_SYMBOL(_restgpr_18_x); ++EXPORT_SYMBOL(_restgpr_19_x); ++EXPORT_SYMBOL(_restgpr_20_x); ++EXPORT_SYMBOL(_restgpr_21_x); ++EXPORT_SYMBOL(_restgpr_22_x); ++EXPORT_SYMBOL(_restgpr_23_x); ++EXPORT_SYMBOL(_restgpr_24_x); ++EXPORT_SYMBOL(_restgpr_25_x); ++EXPORT_SYMBOL(_restgpr_26_x); ++EXPORT_SYMBOL(_restgpr_27_x); ++EXPORT_SYMBOL(_restgpr_28_x); ++EXPORT_SYMBOL(_restgpr_29_x); ++EXPORT_SYMBOL(_restgpr_30_x); ++EXPORT_SYMBOL(_restgpr_31_x); ++#endif /* CONFIG_PPC32 && CONFIG_CC_OPTIMIZE_FOR_SIZE */ diff --git a/target/linux/generic-2.6/patches-2.6.31/031-ppc_gcc_build_fix.patch b/target/linux/generic-2.6/patches-2.6.31/031-ppc_gcc_build_fix.patch new file mode 100644 index 000000000..3151eee26 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.31/031-ppc_gcc_build_fix.patch @@ -0,0 +1,226 @@ +GCC 4.4.x looks to be adding support for generating out-of-line register +saves/restores based on: + +http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01678.html + +This breaks the kernel build as we'd have to link with libgcc to get the +implementation of the register save/restores. + +To workaround this issue, we just stole the save/restore code from gcc +and simplified it down for our needs (integer only).  We only do this if +PPC32 as gcc makes believe the linker on ppc64 will deal with this and +only if CONFIG_CC_OPTIMIZE_FOR_SIZE is set (thus -Os). + +Signed-off-by: Kumar Gala <[EMAIL PROTECTED]> +--- + +If someone using cutting edge toolchains for ppc64 could test and make +sure if we enable CONFIG_CC_OPTIMIZE_FOR_SIZE things work that would be +nice. + +- k + + arch/powerpc/kernel/misc_32.S   |   77 +++++++++++++++++++++++++++ + arch/powerpc/kernel/ppc_ksyms.c |  111 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 188 insertions(+), 0 deletions(-) + +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S +@@ -813,3 +813,80 @@ relocate_new_kernel_end: + relocate_new_kernel_size: + 	.long relocate_new_kernel_end - relocate_new_kernel + #endif ++ ++#if defined(CONFIG_PPC32) && defined(CONFIG_CC_OPTIMIZE_FOR_SIZE) ++/* Routines for saving integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer save area.  */ ++ ++_GLOBAL(_savegpr_14)   stw     14,-72(11)      /* save gp registers */ ++_GLOBAL(_savegpr_15)   stw     15,-68(11) ++_GLOBAL(_savegpr_16)   stw     16,-64(11) ++_GLOBAL(_savegpr_17)   stw     17,-60(11) ++_GLOBAL(_savegpr_18)   stw     18,-56(11) ++_GLOBAL(_savegpr_19)   stw     19,-52(11) ++_GLOBAL(_savegpr_20)   stw     20,-48(11) ++_GLOBAL(_savegpr_21)   stw     21,-44(11) ++_GLOBAL(_savegpr_22)   stw     22,-40(11) ++_GLOBAL(_savegpr_23)   stw     23,-36(11) ++_GLOBAL(_savegpr_24)   stw     24,-32(11) ++_GLOBAL(_savegpr_25)   stw     25,-28(11) ++_GLOBAL(_savegpr_26)   stw     26,-24(11) ++_GLOBAL(_savegpr_27)   stw     27,-20(11) ++_GLOBAL(_savegpr_28)   stw     28,-16(11) ++_GLOBAL(_savegpr_29)   stw     29,-12(11) ++_GLOBAL(_savegpr_30)   stw     30,-8(11) ++_GLOBAL(_savegpr_31)   stw     31,-4(11) ++                       blr ++ ++/* Routines for restoring integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer restore area.  */ ++ ++_GLOBAL(_restgpr_14)   lwz     14,-72(11)      /* restore gp registers */ ++_GLOBAL(_restgpr_15)   lwz     15,-68(11) ++_GLOBAL(_restgpr_16)   lwz     16,-64(11) ++_GLOBAL(_restgpr_17)   lwz     17,-60(11) ++_GLOBAL(_restgpr_18)   lwz     18,-56(11) ++_GLOBAL(_restgpr_19)   lwz     19,-52(11) ++_GLOBAL(_restgpr_20)   lwz     20,-48(11) ++_GLOBAL(_restgpr_21)   lwz     21,-44(11) ++_GLOBAL(_restgpr_22)   lwz     22,-40(11) ++_GLOBAL(_restgpr_23)   lwz     23,-36(11) ++_GLOBAL(_restgpr_24)   lwz     24,-32(11) ++_GLOBAL(_restgpr_25)   lwz     25,-28(11) ++_GLOBAL(_restgpr_26)   lwz     26,-24(11) ++_GLOBAL(_restgpr_27)   lwz     27,-20(11) ++_GLOBAL(_restgpr_28)   lwz     28,-16(11) ++_GLOBAL(_restgpr_29)   lwz     29,-12(11) ++_GLOBAL(_restgpr_30)   lwz     30,-8(11) ++_GLOBAL(_restgpr_31)   lwz     31,-4(11) ++                       blr ++ ++/* Routines for restoring integer registers, called by the compiler.  */ ++/* Called with r11 pointing to the stack header word of the caller of the */ ++/* function, just beyond the end of the integer restore area.  */ ++ ++_GLOBAL(_restgpr_14_x) lwz     14,-72(11)      /* restore gp registers */ ++_GLOBAL(_restgpr_15_x) lwz     15,-68(11) ++_GLOBAL(_restgpr_16_x) lwz     16,-64(11) ++_GLOBAL(_restgpr_17_x) lwz     17,-60(11) ++_GLOBAL(_restgpr_18_x) lwz     18,-56(11) ++_GLOBAL(_restgpr_19_x) lwz     19,-52(11) ++_GLOBAL(_restgpr_20_x) lwz     20,-48(11) ++_GLOBAL(_restgpr_21_x) lwz     21,-44(11) ++_GLOBAL(_restgpr_22_x) lwz     22,-40(11) ++_GLOBAL(_restgpr_23_x) lwz     23,-36(11) ++_GLOBAL(_restgpr_24_x) lwz     24,-32(11) ++_GLOBAL(_restgpr_25_x) lwz     25,-28(11) ++_GLOBAL(_restgpr_26_x) lwz     26,-24(11) ++_GLOBAL(_restgpr_27_x) lwz     27,-20(11) ++_GLOBAL(_restgpr_28_x) lwz     28,-16(11) ++_GLOBAL(_restgpr_29_x) lwz     29,-12(11) ++_GLOBAL(_restgpr_30_x) lwz     30,-8(11) ++_GLOBAL(_restgpr_31_x) lwz     0,4(11) ++                       lwz     31,-4(11) ++                       mtlr    0 ++                       mr      1,11 ++                       blr ++#endif +--- a/arch/powerpc/kernel/ppc_ksyms.c ++++ b/arch/powerpc/kernel/ppc_ksyms.c +@@ -188,3 +188,114 @@ EXPORT_SYMBOL(__mtdcr); + EXPORT_SYMBOL(__mfdcr); + #endif + EXPORT_SYMBOL(empty_zero_page); ++ ++#if defined(CONFIG_PPC32) && defined(CONFIG_CC_OPTIMIZE_FOR_SIZE) ++void _savegpr_14(void); ++void _savegpr_15(void); ++void _savegpr_16(void); ++void _savegpr_17(void); ++void _savegpr_18(void); ++void _savegpr_19(void); ++void _savegpr_20(void); ++void _savegpr_21(void); ++void _savegpr_22(void); ++void _savegpr_23(void); ++void _savegpr_24(void); ++void _savegpr_25(void); ++void _savegpr_26(void); ++void _savegpr_27(void); ++void _savegpr_28(void); ++void _savegpr_29(void); ++void _savegpr_30(void); ++void _savegpr_31(void); ++void _restgpr_14(void); ++void _restgpr_15(void); ++void _restgpr_16(void); ++void _restgpr_17(void); ++void _restgpr_18(void); ++void _restgpr_19(void); ++void _restgpr_20(void); ++void _restgpr_21(void); ++void _restgpr_22(void); ++void _restgpr_23(void); ++void _restgpr_24(void); ++void _restgpr_25(void); ++void _restgpr_26(void); ++void _restgpr_27(void); ++void _restgpr_28(void); ++void _restgpr_29(void); ++void _restgpr_30(void); ++void _restgpr_31(void); ++void _restgpr_14_x(void); ++void _restgpr_15_x(void); ++void _restgpr_16_x(void); ++void _restgpr_17_x(void); ++void _restgpr_18_x(void); ++void _restgpr_19_x(void); ++void _restgpr_20_x(void); ++void _restgpr_21_x(void); ++void _restgpr_22_x(void); ++void _restgpr_23_x(void); ++void _restgpr_24_x(void); ++void _restgpr_25_x(void); ++void _restgpr_26_x(void); ++void _restgpr_27_x(void); ++void _restgpr_28_x(void); ++void _restgpr_29_x(void); ++void _restgpr_30_x(void); ++void _restgpr_31_x(void); ++EXPORT_SYMBOL(_savegpr_14); ++EXPORT_SYMBOL(_savegpr_15); ++EXPORT_SYMBOL(_savegpr_16); ++EXPORT_SYMBOL(_savegpr_17); ++EXPORT_SYMBOL(_savegpr_18); ++EXPORT_SYMBOL(_savegpr_19); ++EXPORT_SYMBOL(_savegpr_20); ++EXPORT_SYMBOL(_savegpr_21); ++EXPORT_SYMBOL(_savegpr_22); ++EXPORT_SYMBOL(_savegpr_23); ++EXPORT_SYMBOL(_savegpr_24); ++EXPORT_SYMBOL(_savegpr_25); ++EXPORT_SYMBOL(_savegpr_26); ++EXPORT_SYMBOL(_savegpr_27); ++EXPORT_SYMBOL(_savegpr_28); ++EXPORT_SYMBOL(_savegpr_29); ++EXPORT_SYMBOL(_savegpr_30); ++EXPORT_SYMBOL(_savegpr_31); ++EXPORT_SYMBOL(_restgpr_14); ++EXPORT_SYMBOL(_restgpr_15); ++EXPORT_SYMBOL(_restgpr_16); ++EXPORT_SYMBOL(_restgpr_17); ++EXPORT_SYMBOL(_restgpr_18); ++EXPORT_SYMBOL(_restgpr_19); ++EXPORT_SYMBOL(_restgpr_20); ++EXPORT_SYMBOL(_restgpr_21); ++EXPORT_SYMBOL(_restgpr_22); ++EXPORT_SYMBOL(_restgpr_23); ++EXPORT_SYMBOL(_restgpr_24); ++EXPORT_SYMBOL(_restgpr_25); ++EXPORT_SYMBOL(_restgpr_26); ++EXPORT_SYMBOL(_restgpr_27); ++EXPORT_SYMBOL(_restgpr_28); ++EXPORT_SYMBOL(_restgpr_29); ++EXPORT_SYMBOL(_restgpr_30); ++EXPORT_SYMBOL(_restgpr_31); ++EXPORT_SYMBOL(_restgpr_14_x); ++EXPORT_SYMBOL(_restgpr_15_x); ++EXPORT_SYMBOL(_restgpr_16_x); ++EXPORT_SYMBOL(_restgpr_17_x); ++EXPORT_SYMBOL(_restgpr_18_x); ++EXPORT_SYMBOL(_restgpr_19_x); ++EXPORT_SYMBOL(_restgpr_20_x); ++EXPORT_SYMBOL(_restgpr_21_x); ++EXPORT_SYMBOL(_restgpr_22_x); ++EXPORT_SYMBOL(_restgpr_23_x); ++EXPORT_SYMBOL(_restgpr_24_x); ++EXPORT_SYMBOL(_restgpr_25_x); ++EXPORT_SYMBOL(_restgpr_26_x); ++EXPORT_SYMBOL(_restgpr_27_x); ++EXPORT_SYMBOL(_restgpr_28_x); ++EXPORT_SYMBOL(_restgpr_29_x); ++EXPORT_SYMBOL(_restgpr_30_x); ++EXPORT_SYMBOL(_restgpr_31_x); ++#endif /* CONFIG_PPC32 && CONFIG_CC_OPTIMIZE_FOR_SIZE */ | 
