extern "C" {
pub fn i5(
a: u32,
b: u32,
c: u32,
d: u32,
e: u32,
ptr: extern "C" fn(u32, u32, u32, u32, u32) -> u32,
) -> u32;
pub fn i6(
a: u32,
b: u32,
c: u32,
d: u32,
e: u32,
f: u32,
ptr: extern "C" fn(u32, u32, u32, u32, u32, u32) -> u32,
) -> u32;
pub fn i7(
a: u32,
b: u32,
c: u32,
d: u32,
e: u32,
f: u32,
g: u32,
ptr: extern "C" fn(u32, u32, u32, u32, u32, u32, u32) -> u32,
) -> u32;
pub fn i_ii_i_rii(a: u32, b: u64, c: u32, ptr: extern "C" fn(u32, u64, u32) -> u64) -> u64;
pub fn i_ii_i_ri(a: u32, b: u64, c: u32, ptr: extern "C" fn(u32, u64, u32) -> u32) -> u32;
}
#[cfg(target_os = "psp")]
core::arch::global_asm!(
r#"
.section .text
.global i5
i5:
// Store the return register as we are calling a function manually.
addiu $sp, -32
sw $ra, 8($sp)
// Load argument 5 into register t0. In MIPS-EABI, t0 is actually a4.
lw $t0, 48($sp)
// Load and call the bridged function.
lw $t1, 52($sp)
jalr $t1
// Restore the stack and return.
lw $ra, 8($sp)
addiu $sp, 32
jr $ra
.global i6
i6:
addiu $sp, -32
sw $ra, 8($sp)
lw $t0, 48($sp)
lw $t1, 52($sp)
lw $t2, 56($sp)
jalr $t2
lw $ra, 8($sp)
addiu $sp, 32
jr $ra
.global i7
i7:
addiu $sp, -32
sw $ra, 8($sp)
lw $t0, 48($sp)
lw $t1, 52($sp)
lw $t2, 56($sp)
lw $t3, 60($sp)
jalr $t3
lw $ra, 8($sp)
addiu $sp, 32
jr $ra
.global i_ii_i_rii
.global i_ii_i_ri
i_ii_i_rii:
i_ii_i_ri:
addiu $sp, -32
sw $ra, 8($sp)
lw $t0, 48($sp)
lw $t1, 52($sp)
jalr $t1
lw $ra, 8($sp)
addiu $sp, 32
jr $ra
"#
);