Home | History | Annotate | Download | only in mips
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #include "asm_support_mips.S"
     18 
     19     .set noreorder
     20     .balign 4
     21 
     22     /*
     23      * Jni dlsym lookup stub.
     24      */
     25     .extern artFindNativeMethod
     26 ENTRY art_jni_dlsym_lookup_stub
     27     addiu $sp, $sp, -32          # leave room for $a0, $a1, $a2, $a3, and $ra
     28     .cfi_adjust_cfa_offset 32
     29     sw     $ra, 16($sp)
     30     .cfi_rel_offset 31, 16
     31     sw     $a3, 12($sp)
     32     .cfi_rel_offset 7, 12
     33     sw     $a2, 8($sp)
     34     .cfi_rel_offset 6, 8
     35     sw     $a1, 4($sp)
     36     .cfi_rel_offset 5, 4
     37     sw     $a0, 0($sp)
     38     .cfi_rel_offset 4, 0
     39     jal   artFindNativeMethod   # (Thread*)
     40     move  $a0, $s1              # pass Thread::Current()
     41     lw    $a0, 0($sp)           # restore registers from stack
     42     lw    $a1, 4($sp)
     43     lw    $a2, 8($sp)
     44     lw    $a3, 12($sp)
     45     lw    $ra, 16($sp)
     46     beq   $v0, $zero, .Lno_native_code_found
     47     addiu $sp, $sp, 32          # restore the stack
     48     .cfi_adjust_cfa_offset -32
     49     move  $t9, $v0              # put method code result in $t9
     50     jalr  $zero, $t9            # leaf call to method's code
     51     nop
     52 .Lno_native_code_found:
     53     jalr  $zero, $ra
     54     nop
     55 END art_jni_dlsym_lookup_stub
     56