Stuart Monteith | b95a534 | 2014-03-12 13:32:32 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2014 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_arm64.S" |
| 18 | |
| 19 | /* |
| 20 | * Jni dlsym lookup stub. |
| 21 | */ |
| 22 | .extern artFindNativeMethod |
Serban Constantinescu | 75b9113 | 2014-04-09 18:39:10 +0100 | [diff] [blame] | 23 | |
| 24 | // TODO: Add CFI directives. |
| 25 | ENTRY art_jni_dlsym_lookup_stub |
| 26 | // spill regs. |
| 27 | stp x29, x30, [sp, #-16]! |
| 28 | mov x29, sp |
| 29 | stp d6, d7, [sp, #-16]! |
| 30 | stp d4, d5, [sp, #-16]! |
| 31 | stp d2, d3, [sp, #-16]! |
| 32 | stp d0, d1, [sp, #-16]! |
| 33 | stp x6, x7, [sp, #-16]! |
| 34 | stp x4, x5, [sp, #-16]! |
| 35 | stp x2, x3, [sp, #-16]! |
| 36 | stp x0, x1, [sp, #-16]! |
| 37 | |
| 38 | bl artFindNativeMethod |
| 39 | mov x17, x0 // store result in scratch reg. |
| 40 | |
| 41 | // load spill regs. |
| 42 | ldp x0, x1, [sp], #16 |
| 43 | ldp x2, x3, [sp], #16 |
| 44 | ldp x4, x5, [sp], #16 |
| 45 | ldp x6, x7, [sp], #16 |
| 46 | ldp d0, d1, [sp], #16 |
| 47 | ldp d2, d3, [sp], #16 |
| 48 | ldp d4, d5, [sp], #16 |
| 49 | ldp d6, d7, [sp], #16 |
| 50 | ldp x29, x30, [sp], #16 |
| 51 | |
| 52 | cbz x17, 1f // is method code null ? |
| 53 | br x17 // if non-null, tail call to method's code. |
| 54 | |
| 55 | 1: |
| 56 | ret // restore regs and return to caller to handle exception. |
| 57 | END art_jni_dlsym_lookup_stub |