Home | History | Annotate | Download | only in mips64
      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 #ifndef ART_RUNTIME_ARCH_MIPS64_ASM_SUPPORT_MIPS64_S_
     18 #define ART_RUNTIME_ARCH_MIPS64_ASM_SUPPORT_MIPS64_S_
     19 
     20 #include "asm_support_mips64.h"
     21 
     22 // Define special registers.
     23 
     24 // Register holding suspend check count down.
     25 #define rSUSPEND $s0
     26 // Register holding Thread::Current().
     27 #define rSELF $s1
     28 
     29 
     30     // Declare a function called name, sets up $gp.
     31     // This macro modifies t8.
     32 .macro ENTRY name
     33     .type \name, %function
     34     .global \name
     35     // Cache alignment for function entry.
     36     .balign 16
     37 \name:
     38     .cfi_startproc
     39     // Set up $gp and store the previous $gp value to $t8. It will be pushed to the
     40     // stack after the frame has been constructed.
     41     .cpsetup $t9, $t8, \name
     42     // Ensure we get a sane starting CFA.
     43     .cfi_def_cfa $sp,0
     44     // Declare a local convenience label to be branched to when $gp is already set up.
     45 .L\name\()_gp_set:
     46 .endm
     47 
     48      // Declare a function called name, doesn't set up $gp.
     49 .macro ENTRY_NO_GP name
     50     .type \name, %function
     51     .global \name
     52     // Cache alignment for function entry.
     53     .balign 16
     54 \name:
     55     .cfi_startproc
     56      // Ensure we get a sane starting CFA.
     57     .cfi_def_cfa $sp,0
     58 .endm
     59 
     60 .macro END name
     61     .cfi_endproc
     62     .size \name, .-\name
     63 .endm
     64 
     65 .macro UNIMPLEMENTED name
     66     ENTRY \name
     67     break
     68     break
     69     END \name
     70 .endm
     71 
     72 
     73 #endif  // ART_RUNTIME_ARCH_MIPS64_ASM_SUPPORT_MIPS64_S_
     74