use $t0-$t3 as arguments for relocator

This commit is contained in:
phcoder 2009-10-19 12:59:33 +02:00
parent 65aa1698d3
commit 0fc89efd85
2 changed files with 24 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 (2, (grub_uint32_t) src, &ptr);
write_reg (3, dest, &ptr);
write_reg (4, size, &ptr);
write_reg (8, (grub_uint32_t) src, &ptr);
write_reg (9, dest, &ptr);
write_reg (10, size, &ptr);
grub_memcpy (ptr, &grub_relocator32_backward_start,
RELOCATOR_SRC_SIZEOF (backward));
ptr = (grub_uint8_t *) ptr + RELOCATOR_SRC_SIZEOF (backward);
@ -89,9 +89,9 @@ write_call_relocator_fw (void *ptr0, void *src, grub_uint32_t dest,
{
void *ptr = ptr0;
int i;
write_reg (2, (grub_uint32_t) src, &ptr);
write_reg (3, dest, &ptr);
write_reg (4, size, &ptr);
write_reg (8, (grub_uint32_t) src, &ptr);
write_reg (9, dest, &ptr);
write_reg (10, size, &ptr);
grub_memcpy (ptr, &grub_relocator32_forward_start,
RELOCATOR_SRC_SIZEOF (forward));
ptr = (grub_uint8_t *) ptr + RELOCATOR_SRC_SIZEOF (forward);

View file

@ -28,32 +28,32 @@
VARIABLE (grub_relocator32_forward_start)
copycont1:
lb $5,0($2)
sb $5,0($3)
addiu $2, $2, 0x1
addiu $3, $3, 0x1
addiu $4, $4, 0xffff
subu $5,$4,$0
bne $5, $0, copycont1
lb $11,0($8)
sb $11,0($9)
addiu $8, $8, 0x1
addiu $9, $9, 0x1
addiu $10, $10, 0xffff
subu $11,$10,$0
bne $11, $0, copycont1
#if __mips >= 2
sync
#endif
VARIABLE (grub_relocator32_forward_end)
VARIABLE (grub_relocator32_backward_start)
addu $3, $3, $4
addu $2, $2, $4
addu $9, $9, $10
addu $8, $8, $10
/* Backward movsl is implicitly off-by-one. compensate that. */
addiu $3, $3, 0xffff
addiu $2, $2, 0xffff
addiu $9, $9, 0xffff
addiu $8, $8, 0xffff
copycont2:
lb $5,0($2)
sb $5,0($3)
addiu $2, $2, 0xffff
addiu $3, $3, 0xffff
addiu $4, 0xffff
subu $5,$4,$0
bne $5, $0, copycont2
lb $11,0($8)
sb $11,0($9)
addiu $8, $8, 0xffff
addiu $9, $9, 0xffff
addiu $10, 0xffff
subu $11,$10,$0
bne $11, $0, copycont2
#if __mips >= 2
sync
#endif