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