Home | History | Annotate | Download | only in assembler
      1 # /*
      2 #  * Copyright (C) 2015 The Android Open Source Project
      3 #  * All rights reserved.
      4 #  *
      5 #  * Redistribution and use in source and binary forms, with or without
      6 #  * modification, are permitted provided that the following conditions
      7 #  * are met:
      8 #  *  * Redistributions of source code must retain the above copyright
      9 #  *    notice, this list of conditions and the following disclaimer.
     10 #  *  * Redistributions in binary form must reproduce the above copyright
     11 #  *    notice, this list of conditions and the following disclaimer in
     12 #  *    the documentation and/or other materials provided with the
     13 #  *    distribution.
     14 #  *
     15 #  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     16 #  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     17 #  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     18 #  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
     19 #  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
     20 #  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     21 #  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
     22 #  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
     23 #  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24 #  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
     25 #  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26 #  * SUCH DAMAGE.
     27 #  */
     28 
     29     .text
     30     .balign 8
     31 
     32     .global asm_mips_test_jacket
     33 
     34     # // Set the register
     35     # // Calls the asm function
     36     # // Reads the register values to output register
     37 
     38     # // Parameters
     39     # // a0 - Function to jump
     40     # // a1 - register values array
     41     # // a2 - flag values array
     42 asm_mips_test_jacket:
     43     # // Save registers to stack
     44     daddiu $sp, $sp, -96
     45     sd  $s0, 64($sp)
     46     sd  $s1, 72($sp)
     47     sd  $s2, 80($sp)
     48     sd  $ra, 88($sp)
     49 
     50     move $s0, $a0
     51     move $s1, $a1
     52     move $s2, $a2
     53 
     54     ld  $v0, 16($s1)
     55     ld  $v1, 24($s1)
     56     ld  $a0, 32($s1)
     57     ld  $a1, 40($s1)
     58     ld  $a2, 48($s1)
     59     ld  $a3, 56($s1)
     60     ld  $a4, 64($s1)
     61     ld  $a5, 72($s1)
     62     ld  $a6, 80($s1)
     63     ld  $a7, 88($s1)
     64     ld  $t0, 96($s1)
     65     ld  $t1, 104($s1)
     66     ld  $t2, 112($s1)
     67     ld  $t3, 120($s1)
     68 
     69     jal $s0
     70 
     71     sd  $v0, 16($s1)
     72     sd  $v1, 24($s1)
     73     sd  $a0, 32($s1)
     74     sd  $a1, 40($s1)
     75     sd  $a2, 48($s1)
     76     sd  $a3, 56($s1)
     77     sd  $a4, 64($s1)
     78     sd  $a5, 72($s1)
     79     sd  $a6, 80($s1)
     80     sd  $a7, 88($s1)
     81     sd  $t0, 96($s1)
     82     sd  $t1, 104($s1)
     83     sd  $t2, 112($s1)
     84     sd  $t3, 120($s1)
     85 
     86     ld  $s0, 64($sp)
     87     ld  $s1, 72($sp)
     88     ld  $s2, 80($sp)
     89     ld  $ra, 88($sp)
     90 
     91     daddiu $sp, $sp, 96
     92 
     93     j   $ra
     94