require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&KERN_REG_SIZE)) {
    sub KERN_REG_SIZE () {	( &NUMSAVEREGS *  &REGSZ);}
}
unless(defined(&KERN_EXC_FRAME_SIZE)) {
    sub KERN_EXC_FRAME_SIZE () {	( &CF_SZ +  &KERN_REG_SIZE + 16);}
}
unless(defined(&SAVE_REG)) {
    sub SAVE_REG {
	my($reg, $offs, $base, $bo) = @_;
	eval q( &REG_S $reg, $bo + ( &REGSZ * $offs) ($base));
    }
}
unless(defined(&RESTORE_REG)) {
    sub RESTORE_REG {
	my($reg, $offs, $base, $bo) = @_;
	eval q( &REG_L $reg, $bo + ( &REGSZ * $offs) ($base));
    }
}
unless(defined(&SAVE_CPU)) {
    sub SAVE_CPU {
	my($frame, $bo) = @_;
	eval q( &SAVE_REG( &AT,  &AST, $frame, $bo) ;  &SAVE_REG( &v0,  &V0, $frame, $bo) ;  &SAVE_REG( &v1,  &V1, $frame, $bo) ;  &SAVE_REG( &a0,  &A0, $frame, $bo) ;  &SAVE_REG( &a1,  &A1, $frame, $bo) ;  &SAVE_REG( &a2,  &A2, $frame, $bo) ;  &SAVE_REG( &a3,  &A3, $frame, $bo) ;  &SAVE_REG($8,  &T0, $frame, $bo) ;  &SAVE_REG($9,  &T1, $frame, $bo) ;  &SAVE_REG($10,  &T2, $frame, $bo) ;  &SAVE_REG($11,  &T3, $frame, $bo) ;  &SAVE_REG($12,  &T4, $frame, $bo) ;  &SAVE_REG($13,  &T5, $frame, $bo) ;  &SAVE_REG($14,  &T6, $frame, $bo) ;  &SAVE_REG($15,  &T7, $frame, $bo) ;  &SAVE_REG( &t8,  &T8, $frame, $bo) ;  &SAVE_REG( &t9,  &T9, $frame, $bo) ;  &SAVE_REG( &gp,  &GP, $frame, $bo) ;  &SAVE_REG( &ra,  &RA, $frame, $bo) ;  &mflo  &v0 ;  &mfhi  &v1 ;  &mfc0  &a0,  &COP_0_CAUSE_REG ;  &mfc0  &a1,  &COP_0_STATUS_REG ;  &dmfc0  &a2,  &COP_0_BAD_VADDR ;  &dmfc0  &a3,  &COP_0_EXC_PC ;  &SAVE_REG( &v0,  &MULLO, $frame, $bo) ;  &SAVE_REG( &v1,  &MULHI, $frame, $bo) ;  &SAVE_REG( &a0,  &CAUSE, $frame, $bo) ;  &SAVE_REG( &a1,  &SR, $frame, $bo) ;  &SAVE_REG( &a2,  &BADVADDR, $frame, $bo) ;  &SAVE_REG( &a3,  &PC, $frame, $bo) ;  &SAVE_REG( &sp,  &SP, $frame, $bo) ;  &PTR_ADDU  &a0, $frame, $bo ;  &lw  &a2,  &cpl ;  &SAVE_REG( &a2,  &CPL, $frame, $bo));
    }
}
unless(defined(&SAVE_CPU_SREG)) {
    sub SAVE_CPU_SREG {
	my($frame, $bo) = @_;
	eval q( &SAVE_REG( &s0,  &S0, $frame, $bo) ;  &SAVE_REG( &s1,  &S1, $frame, $bo) ;  &SAVE_REG( &s2,  &S2, $frame, $bo) ;  &SAVE_REG( &s3,  &S3, $frame, $bo) ;  &SAVE_REG( &s4,  &S4, $frame, $bo) ;  &SAVE_REG( &s5,  &S5, $frame, $bo) ;  &SAVE_REG( &s6,  &S6, $frame, $bo) ;  &SAVE_REG( &s7,  &S7, $frame, $bo) ;  &SAVE_REG( &s8,  &S8, $frame, $bo));
    }
}
unless(defined(&RESTORE_CPU)) {
    sub RESTORE_CPU {
	my($frame, $bo) = @_;
	eval q( &RESTORE_REG( &t1,  &SR, $frame, $bo) ;  &RESTORE_REG( &t2,  &MULLO, $frame, $bo) ;  &RESTORE_REG( &t3,  &MULHI, $frame, $bo) ;  &mtc0  &t1,  &COP_0_STATUS_REG ;  &mtlo  &t2 ;  &mthi  &t3 ;  &dmtc0  &a0,  &COP_0_EXC_PC ;  &RESTORE_REG( &AT,  &AST, $frame, $bo) ;  &RESTORE_REG( &v0,  &V0, $frame, $bo) ;  &RESTORE_REG( &v1,  &V1, $frame, $bo) ;  &RESTORE_REG( &a0,  &A0, $frame, $bo) ;  &RESTORE_REG( &a1,  &A1, $frame, $bo) ;  &RESTORE_REG( &a2,  &A2, $frame, $bo) ;  &RESTORE_REG( &a3,  &A3, $frame, $bo) ;  &RESTORE_REG($8,  &T0, $frame, $bo) ;  &RESTORE_REG($9,  &T1, $frame, $bo) ;  &RESTORE_REG($10,  &T2, $frame, $bo) ;  &RESTORE_REG($11,  &T3, $frame, $bo) ;  &RESTORE_REG($12,  &T4, $frame, $bo) ;  &RESTORE_REG($13,  &T5, $frame, $bo) ;  &RESTORE_REG($14,  &T6, $frame, $bo) ;  &RESTORE_REG($15,  &T7, $frame, $bo) ;  &RESTORE_REG( &t8,  &T8, $frame, $bo) ;  &RESTORE_REG( &t9,  &T9, $frame, $bo) ;  &RESTORE_REG( &gp,  &GP, $frame, $bo) ;  &RESTORE_REG( &ra,  &RA, $frame, $bo));
    }
}
unless(defined(&RESTORE_CPU_SREG)) {
    sub RESTORE_CPU_SREG {
	my($frame, $bo) = @_;
	eval q( &RESTORE_REG( &s0,  &S0, $frame, $bo) ;  &RESTORE_REG( &s1,  &S1, $frame, $bo) ;  &RESTORE_REG( &s2,  &S2, $frame, $bo) ;  &RESTORE_REG( &s3,  &S3, $frame, $bo) ;  &RESTORE_REG( &s4,  &S4, $frame, $bo) ;  &RESTORE_REG( &s5,  &S5, $frame, $bo) ;  &RESTORE_REG( &s6,  &S6, $frame, $bo) ;  &RESTORE_REG( &s7,  &S7, $frame, $bo) ;  &RESTORE_REG( &s8,  &S8, $frame, $bo));
    }
}
1;
