diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-28 11:49:56 +0000 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-11-28 11:49:56 +0000 |
commit | 9ee4be4156b1a507f199e750ba2c13ffb6ea9b42 (patch) | |
tree | c92cb39ad1f0be559390c2a995d9aad2b0300b14 /arch/powerpc/lib/feature-fixups.c | |
parent | 005d610f2abc550172726b997f5cfe683769cc1c (diff) | |
parent | d4d6373c1109b11c8118340be97ae31b8f94d66a (diff) |
Merge remote-tracking branch 'regulator/for-linus' into regulator-next
Diffstat (limited to 'arch/powerpc/lib/feature-fixups.c')
-rw-r--r-- | arch/powerpc/lib/feature-fixups.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c index 0d08d017139..7a8a7487cee 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c @@ -18,6 +18,8 @@ #include <linux/init.h> #include <asm/cputable.h> #include <asm/code-patching.h> +#include <asm/page.h> +#include <asm/sections.h> struct fixup_entry { @@ -128,6 +130,27 @@ void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end) } } +void do_final_fixups(void) +{ +#if defined(CONFIG_PPC64) && defined(CONFIG_RELOCATABLE) + int *src, *dest; + unsigned long length; + + if (PHYSICAL_START == 0) + return; + + src = (int *)(KERNELBASE + PHYSICAL_START); + dest = (int *)KERNELBASE; + length = (__end_interrupts - _stext) / sizeof(int); + + while (length--) { + patch_instruction(dest, *src); + src++; + dest++; + } +#endif +} + #ifdef CONFIG_FTR_FIXUP_SELFTEST #define check(x) \ |