* kern/i386/pc/startup.S: Assert that uncompressed functions
don't spill beyond GRUB_KERNEL_MACHINE_RAW_SIZE.
* kern/i386/pc/lzo1x.S: Remove all .align directives in the
code, as they push parts of the code (error handlers) beyond
GRUB_KERNEL_MACHINE_RAW_SIZE. Speed is not as important in this
code as correctness and size.
+2008-03-28 Pavel Roskin <proski@gnu.org>
+
+ * kern/i386/pc/startup.S: Assert that uncompressed functions
+ don't spill beyond GRUB_KERNEL_MACHINE_RAW_SIZE.
+ * kern/i386/pc/lzo1x.S: Remove all .align directives in the
+ code, as they push parts of the code (error handlers) beyond
+ GRUB_KERNEL_MACHINE_RAW_SIZE. Speed is not as important in this
+ code as correctness and size.
+
2008-03-28 Pavel Roskin <proski@gnu.org>
* kern/i386/pc/startup.S
jmp 3f
- .align 8
.L00:
LODSB
.L01:
// M2
************************************************************************/
- .align 8
.LMATCH:
cmpb $64, %al
jb .LM3MATCH
jmp 3f
- .align 8
.LM3MATCH:
cmpb $32, %al
jb .LM4MATCH
// copy match
************************************************************************/
- .align 2
.LCOPYLONG: /* copy match using longwords */
leal -3(%edi,%ecx), %eax
shrl $2, %ecx
jmp .LMATCH
- .align 8
.LCOPYBYTE: /* copy match using bytes */
xchgl %edx,%esi
subl N_3,%ecx
jmp 3f
- .align 8
.LM4MATCH:
cmpb $16, %al
jb .LM1MATCH
// M1
************************************************************************/
- .align 8
.LM1MATCH:
/* a M1 match */
shrl $2, %eax
#include "lzo1x.S"
+/*
+ * The code beyond this point is compressed. Assert that the uncompressed
+ * code fits GRUB_KERNEL_MACHINE_RAW_SIZE.
+ */
+ . = EXT_C(start) + GRUB_KERNEL_MACHINE_RAW_SIZE
/*
* This call is special... it never returns... in fact it should simply