⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trampolines.s

📁 基于LWVCL开发的库
💻 S
字号:
/* * powerpc/trampolines.S * */#define L(x) x#include "kaffe/trampoline.h"/* include common ppc asm syntax header */#if defined(HAVE_ASM_PPC_ASM_H)#include <asm/ppc_asm.h>#endif /* defined(HAVE_ASM_PPC_ASM_H) */#if defined(TRAMPOLINE_FUNCTION)/* * If we have an explit function defined then use that. */TRAMPOLINE_FUNCTION()#else/* * Otherwise we'll try to construct one. */.text.align 2.globl C_FUNC_NAME(powerpc_do_fixup_trampoline)     C_FUNC_NAME(powerpc_do_fixup_trampoline) :/* Function prologue: establish a minimum stack frame. We don't * save lr - it was already saved at 8(r1) by the trampoline * code. However, we must save r3 and r4, as we will use them * to call soft_fixup_trampoline(). */     stw  r3, -4(r1)     stw  r4, -8(r1)     stw  r5, -12(r1)     stw  r6, -16(r1)     stw  r7, -20(r1)     stw  r8, -24(r1)     stw  r9, -28(r1)     stw  r10, -32(r1)     stfd  f1, -40(r1)     stfd  f2, -48(r1)     stfd  f3, -56(r1)     stfd  f4, -64(r1)     stfd  f5, -72(r1)     stfd  f6, -80(r1)     stfd  f7, -88(r1)     stfd  f8, -96(r1)     stfd  f9, -104(r1)     stfd  f10, -112(r1)     stfd  f11, -120(r1)     stfd  f12, -128(r1)     stfd  f13, -136(r1)     stwu r1, -192(r1)# Build function call to soft_fixup_trampoline(). This function# requires two arguments: a 'Method *m' and a 'void **where'.# They can be found immediately after the trampoline code which# took us here - that is, at (lr) and 4(lr)     mflr r4     lwz  r3, 0(r4)     lwz  r4, 4(r4)# Call soft_fixup_trampoline(). Return value will be in r3,# which is the address of the translated native code.#if defined(__APPLE__)     bl Lsoft_fixup_trampoline$stub#else     bl soft_fixup_trampoline#endif# Save return value in ctr, so that we can jump there at the# end of this function     mtctr r3# Restore previous stack pointer     addi r1, r1, 192# Restore r3 and r4 (the original arguments to the native# method that we overwrote to call soft_fixup_trampoline)     lwz  r3, -4(r1)     lwz  r4, -8(r1)     lwz  r5, -12(r1)     lwz  r6, -16(r1)     lwz  r7, -20(r1)     lwz  r8, -24(r1)     lwz  r9, -28(r1)     lwz  r10, -32(r1)     lfd  f1, -40(r1)     lfd  f2, -48(r1)     lfd  f3, -56(r1)     lfd  f4, -64(r1)     lfd  f5, -72(r1)     lfd  f6, -80(r1)     lfd  f7, -88(r1)     lfd  f8, -96(r1)     lfd  f9, -104(r1)     lfd  f10, -112(r1)     lfd  f11, -120(r1)     lfd  f12, -128(r1)     lfd  f13, -136(r1)# Restore Link Register before invoking native method, so that# it returns to the right place.#if defined(__APPLE__)     lwz  r0, 8(r1)#else     lwz  r0, 4(r1)#endif     mtlr r0# Jump to the native method address that we obtained as a# return value of soft_fixup_trampoline()     bctr#endif	#if defined(__APPLE__).data	.align 2LDFCM0:	.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32	.align	2Lsoft_fixup_trampoline$stub:	.indirect_symbol _soft_fixup_trampoline	mflr	r0	bcl	20,31,LO$soft_fixup_trampolineLO$soft_fixup_trampoline:	mflr	r11	addis	r11,r11,ha16(L_soft_fixup_trampoline$lazy_ptr - LO$soft_fixup_trampoline)	mtlr	r0	lwzu	r12,lo16(L_soft_fixup_trampoline$lazy_ptr - LO$soft_fixup_trampoline)(r11)	mtctr	r12	bctr.data.lazy_symbol_pointerL_soft_fixup_trampoline$lazy_ptr:	.indirect_symbol _soft_fixup_trampoline	.long   dyld_stub_binding_helper#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -