blob: 8a7f742026b7d5dfcd9e4b536775c1712a9a9c26 [file] [log] [blame]
# /*
# * Copyright (C) 2015 The Android Open Source Project
# * All rights reserved.
# *
# * Redistribution and use in source and binary forms, with or without
# * modification, are permitted provided that the following conditions
# * are met:
# * * Redistributions of source code must retain the above copyright
# * notice, this list of conditions and the following disclaimer.
# * * Redistributions in binary form must reproduce the above copyright
# * notice, this list of conditions and the following disclaimer in
# * the documentation and/or other materials provided with the
# * distribution.
# *
# * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# * SUCH DAMAGE.
# */
.text
.align 8
.global asm_mips_test_jacket
# // Set the register
# // Calls the asm function
# // Reads the register values to output register
# // Parameters
# // a0 - Function to jump
# // a1 - register values array
# // a2 - flag values array
asm_mips_test_jacket:
# // Save registers to stack
daddiu $sp, $sp, -96
sd $s0, 64($sp)
sd $s1, 72($sp)
sd $s2, 80($sp)
sd $ra, 88($sp)
move $s0, $a0
move $s1, $a1
move $s2, $a2
ld $v0, 16($s1)
ld $v1, 24($s1)
ld $a0, 32($s1)
ld $a1, 40($s1)
ld $a2, 48($s1)
ld $a3, 56($s1)
ld $a4, 64($s1)
ld $a5, 72($s1)
ld $a6, 80($s1)
ld $a7, 88($s1)
ld $t0, 96($s1)
ld $t1, 104($s1)
ld $t2, 112($s1)
ld $t3, 120($s1)
jal $s0
sd $v0, 16($s1)
sd $v1, 24($s1)
sd $a0, 32($s1)
sd $a1, 40($s1)
sd $a2, 48($s1)
sd $a3, 56($s1)
sd $a4, 64($s1)
sd $a5, 72($s1)
sd $a6, 80($s1)
sd $a7, 88($s1)
sd $t0, 96($s1)
sd $t1, 104($s1)
sd $t2, 112($s1)
sd $t3, 120($s1)
ld $s0, 64($sp)
ld $s1, 72($sp)
ld $s2, 80($sp)
ld $ra, 88($sp)
daddiu $sp, $sp, 96
j $ra