diff --git a/ChangeLog b/ChangeLog index 17b7ef605..42c9ebdeb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-08-29 Pavel Roskin + + * kern/powerpc/ieee1275/crt0.S: Include grub/symbol.h and + grub/cpu/kernel.h. Add start label for consistency with other + platforms. Add grub_prefix immediately after start. Add jump + to the code after grub_prefix. + * include/grub/powerpc/kernel.h: Provide valid values for + GRUB_KERNEL_CPU_PREFIX and GRUB_KERNEL_CPU_DATA_END. + 2008-08-29 Bean * configure.ac: Change host_os to cygwin for mingw. diff --git a/include/grub/powerpc/kernel.h b/include/grub/powerpc/kernel.h index 2bcc3785d..b4687337f 100644 --- a/include/grub/powerpc/kernel.h +++ b/include/grub/powerpc/kernel.h @@ -26,8 +26,7 @@ rewrite grub-mkimage to generate valid ELF files. */ #define GRUB_MOD_GAP 0x8000 -/* prefix not supported on powerpc yet. */ -#define GRUB_KERNEL_CPU_PREFIX 0 -#define GRUB_KERNEL_CPU_DATA_END 0 +#define GRUB_KERNEL_CPU_PREFIX 0x4 +#define GRUB_KERNEL_CPU_DATA_END 0x44 #endif diff --git a/kern/powerpc/ieee1275/crt0.S b/kern/powerpc/ieee1275/crt0.S index fac99d6b0..35d6133e2 100644 --- a/kern/powerpc/ieee1275/crt0.S +++ b/kern/powerpc/ieee1275/crt0.S @@ -17,13 +17,31 @@ * along with GRUB. If not, see . */ +#include +#include + .extern __bss_start .extern _end .text .align 2 - .globl _start -_start: + .globl start, _start +start: +_start: + b codestart + + . = EXT_C(start) + GRUB_KERNEL_CPU_PREFIX + +VARIABLE(grub_prefix) + /* to be filled by grub-mkelfimage */ + + /* + * Leave some breathing room for the prefix. + */ + + . = EXT_C(start) + GRUB_KERNEL_CPU_DATA_END + +codestart: li 2, 0 li 13, 0