1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 3*4882a593Smuzhiyun * License. See the file "COPYING" in the main directory of this archive 4*4882a593Smuzhiyun * for more details. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 1999, 2000, 2003 Ralf Baechle 7*4882a593Smuzhiyun * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun #ifndef _ASM_SIM_H 10*4882a593Smuzhiyun #define _ASM_SIM_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <asm/asm-offsets.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define __str2(x) #x 16*4882a593Smuzhiyun #define __str(x) __str2(x) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #ifdef CONFIG_32BIT 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define save_static_function(symbol) \ 21*4882a593Smuzhiyun __asm__( \ 22*4882a593Smuzhiyun ".text\n\t" \ 23*4882a593Smuzhiyun ".globl\t__" #symbol "\n\t" \ 24*4882a593Smuzhiyun ".align\t2\n\t" \ 25*4882a593Smuzhiyun ".type\t__" #symbol ", @function\n\t" \ 26*4882a593Smuzhiyun ".ent\t__" #symbol ", 0\n__" \ 27*4882a593Smuzhiyun #symbol":\n\t" \ 28*4882a593Smuzhiyun ".frame\t$29, 0, $31\n\t" \ 29*4882a593Smuzhiyun "sw\t$16,"__str(PT_R16)"($29)\t\t\t# save_static_function\n\t" \ 30*4882a593Smuzhiyun "sw\t$17,"__str(PT_R17)"($29)\n\t" \ 31*4882a593Smuzhiyun "sw\t$18,"__str(PT_R18)"($29)\n\t" \ 32*4882a593Smuzhiyun "sw\t$19,"__str(PT_R19)"($29)\n\t" \ 33*4882a593Smuzhiyun "sw\t$20,"__str(PT_R20)"($29)\n\t" \ 34*4882a593Smuzhiyun "sw\t$21,"__str(PT_R21)"($29)\n\t" \ 35*4882a593Smuzhiyun "sw\t$22,"__str(PT_R22)"($29)\n\t" \ 36*4882a593Smuzhiyun "sw\t$23,"__str(PT_R23)"($29)\n\t" \ 37*4882a593Smuzhiyun "sw\t$30,"__str(PT_R30)"($29)\n\t" \ 38*4882a593Smuzhiyun "j\t" #symbol "\n\t" \ 39*4882a593Smuzhiyun ".end\t__" #symbol "\n\t" \ 40*4882a593Smuzhiyun ".size\t__" #symbol",. - __" #symbol) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #endif /* CONFIG_32BIT */ 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #ifdef CONFIG_64BIT 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define save_static_function(symbol) \ 47*4882a593Smuzhiyun __asm__( \ 48*4882a593Smuzhiyun ".text\n\t" \ 49*4882a593Smuzhiyun ".globl\t__" #symbol "\n\t" \ 50*4882a593Smuzhiyun ".align\t2\n\t" \ 51*4882a593Smuzhiyun ".type\t__" #symbol ", @function\n\t" \ 52*4882a593Smuzhiyun ".ent\t__" #symbol ", 0\n__" \ 53*4882a593Smuzhiyun #symbol":\n\t" \ 54*4882a593Smuzhiyun ".frame\t$29, 0, $31\n\t" \ 55*4882a593Smuzhiyun "sd\t$16,"__str(PT_R16)"($29)\t\t\t# save_static_function\n\t" \ 56*4882a593Smuzhiyun "sd\t$17,"__str(PT_R17)"($29)\n\t" \ 57*4882a593Smuzhiyun "sd\t$18,"__str(PT_R18)"($29)\n\t" \ 58*4882a593Smuzhiyun "sd\t$19,"__str(PT_R19)"($29)\n\t" \ 59*4882a593Smuzhiyun "sd\t$20,"__str(PT_R20)"($29)\n\t" \ 60*4882a593Smuzhiyun "sd\t$21,"__str(PT_R21)"($29)\n\t" \ 61*4882a593Smuzhiyun "sd\t$22,"__str(PT_R22)"($29)\n\t" \ 62*4882a593Smuzhiyun "sd\t$23,"__str(PT_R23)"($29)\n\t" \ 63*4882a593Smuzhiyun "sd\t$30,"__str(PT_R30)"($29)\n\t" \ 64*4882a593Smuzhiyun "j\t" #symbol "\n\t" \ 65*4882a593Smuzhiyun ".end\t__" #symbol "\n\t" \ 66*4882a593Smuzhiyun ".size\t__" #symbol",. - __" #symbol) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #endif /* CONFIG_64BIT */ 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #endif /* _ASM_SIM_H */ 71