This commit is contained in:
phcoder 2009-10-16 17:40:59 +02:00
parent 1435b0bc86
commit 81a642e8e2
4 changed files with 35 additions and 24 deletions

View file

@ -71,9 +71,9 @@ write_call_relocator_bw (void *ptr0, void *src, grub_uint32_t dest,
{
void *ptr = ptr0;
int i;
write_reg (1, (grub_uint32_t) src, &ptr);
write_reg (2, dest, &ptr);
write_reg (3, size, &ptr);
write_reg (2, (grub_uint32_t) src, &ptr);
write_reg (3, dest, &ptr);
write_reg (4, size, &ptr);
grub_memcpy (ptr, &grub_relocator32_backward_start,
RELOCATOR_SRC_SIZEOF (backward));
for (i = 1; i < 32; i++)
@ -88,9 +88,9 @@ write_call_relocator_fw (void *ptr0, void *src, grub_uint32_t dest,
{
void *ptr = ptr0;
int i;
write_reg (1, (grub_uint32_t) src, &ptr);
write_reg (2, dest, &ptr);
write_reg (3, size, &ptr);
write_reg (2, (grub_uint32_t) src, &ptr);
write_reg (3, dest, &ptr);
write_reg (4, size, &ptr);
grub_memcpy (ptr, &grub_relocator32_forward_start,
RELOCATOR_SRC_SIZEOF (forward));
for (i = 1; i < 32; i++)

View file

@ -28,23 +28,23 @@
VARIABLE (grub_relocator32_forward_start)
copycont1:
lb $4,0($1)
sb $4,0($2)
addiu $3, $3, 0xffff
subu $4,$3,$0
bne $4, $0, copycont1
lb $5,0($2)
sb $5,0($3)
addiu $4, $4, 0xffff
subu $5,$4,$0
bne $5, $0, copycont1
VARIABLE (grub_relocator32_forward_end)
VARIABLE (grub_relocator32_backward_start)
addu $2, $2, $3
addu $1, $1, $3
addu $3, $3, $4
addu $2, $2, $4
/* Backward movsl is implicitly off-by-one. compensate that. */
addiu $3, $3, 0xffff
addiu $2, $2, 0xffff
addiu $1, $1, 0xffff
copycont2:
lb $4,0($1)
sb $4,0($2)
addiu $3, 0xffff
subu $4,$3,$0
bne $4, $0, copycont2
lb $5,0($2)
sb $5,0($3)
addiu $4, 0xffff
subu $5,$4,$0
bne $5, $0, copycont2
VARIABLE (grub_relocator32_backward_end)