MAke a separate scratch for decompressor
This commit is contained in:
parent
f8926c32b4
commit
e0a8ef26e4
5 changed files with 33 additions and 14 deletions
|
@ -80,6 +80,27 @@ void *memmove (void *dest, const void *src, grub_size_t n)
|
|||
void *memcpy (void *dest, const void *src, grub_size_t n)
|
||||
__attribute__ ((alias ("grub_memmove")));
|
||||
|
||||
void *grub_decompressor_scratch;
|
||||
|
||||
void
|
||||
find_scratch (void *src, void *dst, unsigned long srcsize,
|
||||
unsigned long dstsize)
|
||||
{
|
||||
#ifdef _mips
|
||||
/* Decoding from ROM. */
|
||||
if (((grub_addr_t) src & 0x10000000))
|
||||
{
|
||||
grub_decompressor_scratch = (char *) dst + dstsize;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if ((char *) src + srcsize > (char *) dst + dstsize)
|
||||
grub_decompressor_scratch = (char *) src + srcsize;
|
||||
else
|
||||
grub_decompressor_scratch = (char *) dst + dstsize;
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
grub_decompress_core (void *src, void *dst, unsigned long srcsize,
|
||||
unsigned long dstsize)
|
||||
|
@ -87,6 +108,8 @@ grub_decompress_core (void *src, void *dst, unsigned long srcsize,
|
|||
struct xz_dec *dec;
|
||||
struct xz_buf buf;
|
||||
|
||||
find_scratch (src, dst, srcsize, dstsize);
|
||||
|
||||
dec = xz_dec_init (GRUB_DECOMPRESSOR_DICT_SIZE);
|
||||
|
||||
buf.in = src;
|
||||
|
|
|
@ -49,7 +49,7 @@ codestart:
|
|||
|
||||
/* Parse arguments. Has to be done before relocation.
|
||||
So need to do it in asm. */
|
||||
#if 0 // def GRUB_MACHINE_MIPS_YEELOONG
|
||||
#ifdef GRUB_MACHINE_MIPS_YEELOONG
|
||||
move $s2, $zero
|
||||
move $s3, $zero
|
||||
move $s4, $zero
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue