fix xptcalls for macppc. ok/tested by kili@
This commit is contained in:
parent
f4e598f252
commit
973fcef86c
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile,v 1.7 2008/08/23 22:27:46 martynas Exp $
|
||||
# $OpenBSD: Makefile,v 1.8 2008/09/15 19:20:07 martynas Exp $
|
||||
|
||||
SHARED_ONLY= Yes
|
||||
ONLY_FOR_ARCHS= alpha amd64 arm i386 powerpc sparc sparc64
|
||||
@ -7,7 +7,7 @@ COMMENT= redesign of Mozilla's browser component
|
||||
|
||||
VER= 3.0.1
|
||||
DISTNAME= mozilla
|
||||
PKGNAME= firefox3-${VER}p5
|
||||
PKGNAME= firefox3-${VER}p6
|
||||
SO_VERSION= 20.0
|
||||
# NOTE: Must bump minor version if any shlib's are removed from the
|
||||
# components dir to avoid pkg_add -r issues.
|
||||
|
@ -1,6 +1,6 @@
|
||||
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_Makefile_in,v 1.1.1.1 2008/07/25 01:52:55 martynas Exp $
|
||||
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Wed Jun 18 18:37:01 2008
|
||||
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Wed Jun 18 20:32:04 2008
|
||||
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_Makefile_in,v 1.2 2008/09/15 19:20:07 martynas Exp $
|
||||
--- xpcom/reflect/xptcall/src/md/unix/Makefile.in.orig Wed Apr 9 09:34:20 2008
|
||||
+++ xpcom/reflect/xptcall/src/md/unix/Makefile.in Sun Sep 14 16:48:09 2008
|
||||
@@ -192,7 +192,7 @@ endif
|
||||
#
|
||||
# OpenBSD/ARM
|
||||
@ -10,3 +10,11 @@ $OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_Makefile_in,v 1.1.1.1 2008/07/
|
||||
CPPSRCS := xptcinvoke_arm_openbsd.cpp xptcstubs_arm_openbsd.cpp
|
||||
endif
|
||||
|
||||
@@ -340,6 +340,7 @@ endif
|
||||
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDpowerpc)
|
||||
CPPSRCS := xptcinvoke_ppc_openbsd.cpp xptcstubs_ppc_openbsd.cpp
|
||||
ASFILES := xptcinvoke_asm_ppc_openbsd.s xptcstubs_asm_ppc_openbsd.s
|
||||
+AS := $(CC) -c -x assembler-with-cpp
|
||||
endif
|
||||
|
||||
#
|
||||
|
@ -1,14 +1,227 @@
|
||||
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_xptcinvoke_asm_ppc_openbsd_s,v 1.1.1.1 2008/07/25 01:52:55 martynas Exp $
|
||||
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_xptcinvoke_asm_ppc_openbsd_s,v 1.2 2008/09/15 19:20:07 martynas Exp $
|
||||
--- xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_openbsd.s.orig Sun Dec 23 01:57:11 2007
|
||||
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_openbsd.s Wed Jul 16 03:44:01 2008
|
||||
@@ -102,9 +102,7 @@ NS_InvokeByIndex_P:
|
||||
lwz r3,8(r31) # r3 <= that
|
||||
lwz r4,12(r31) # r4 <= methodIndex
|
||||
lwz r5,0(r3) # r5 <= vtable ( == *that )
|
||||
+++ xpcom/reflect/xptcall/src/md/unix/xptcinvoke_asm_ppc_openbsd.s Sun Sep 14 22:24:42 2008
|
||||
@@ -1,43 +1,43 @@
|
||||
-# -*- Mode: Asm -*-
|
||||
-#
|
||||
-# ***** BEGIN LICENSE BLOCK *****
|
||||
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
-#
|
||||
-# The contents of this file are subject to the Mozilla Public License Version
|
||||
-# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
-# the License. You may obtain a copy of the License at
|
||||
-# http:#www.mozilla.org/MPL/
|
||||
-#
|
||||
-# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
-# for the specific language governing rights and limitations under the
|
||||
-# License.
|
||||
-#
|
||||
-# The Original Code is mozilla.org code.
|
||||
-#
|
||||
-# The Initial Developer of the Original Code is
|
||||
-# Netscape Communications Corporation.
|
||||
-# Portions created by the Initial Developer are Copyright (C) 1999
|
||||
-# the Initial Developer. All Rights Reserved.
|
||||
-#
|
||||
-# Contributor(s):
|
||||
-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
|
||||
-# beard@netscape.com (Patrick Beard)
|
||||
-# waterson@netscape.com (Chris Waterson)
|
||||
-#
|
||||
-# Alternatively, the contents of this file may be used under the terms of
|
||||
-# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
-# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
-# of those above. If you wish to allow use of your version of this file only
|
||||
-# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
-# use your version of this file under the terms of the MPL, indicate your
|
||||
-# decision by deleting the provisions above and replace them with the notice
|
||||
-# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
-# the provisions above, a recipient may use your version of this file under
|
||||
-# the terms of any one of the MPL, the GPL or the LGPL.
|
||||
-#
|
||||
-# ***** END LICENSE BLOCK *****
|
||||
+// -*- Mode: Asm -*-
|
||||
+//
|
||||
+// ***** BEGIN LICENSE BLOCK *****
|
||||
+// Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
+//
|
||||
+// The contents of this file are subject to the Mozilla Public License Version
|
||||
+// 1.1 (the "License"); you may not use this file except in compliance with
|
||||
+// the License. You may obtain a copy of the License at
|
||||
+// http://www.mozilla.org/MPL/
|
||||
+//
|
||||
+// Software distributed under the License is distributed on an "AS IS" basis,
|
||||
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
+// for the specific language governing rights and limitations under the
|
||||
+// License.
|
||||
+//
|
||||
+// The Original Code is mozilla.org code.
|
||||
+//
|
||||
+// The Initial Developer of the Original Code is
|
||||
+// Netscape Communications Corporation.
|
||||
+// Portions created by the Initial Developer are Copyright (C) 1999
|
||||
+// the Initial Developer. All Rights Reserved.
|
||||
+//
|
||||
+// Contributor(s):
|
||||
+// Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
|
||||
+// beard@netscape.com (Patrick Beard)
|
||||
+// waterson@netscape.com (Chris Waterson)
|
||||
+//
|
||||
+// Alternatively, the contents of this file may be used under the terms of
|
||||
+// either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
+// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
+// in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
+// of those above. If you wish to allow use of your version of this file only
|
||||
+// under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
+// use your version of this file under the terms of the MPL, indicate your
|
||||
+// decision by deleting the provisions above and replace them with the notice
|
||||
+// and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
+// the provisions above, a recipient may use your version of this file under
|
||||
+// the terms of any one of the MPL, the GPL or the LGPL.
|
||||
+//
|
||||
+// ***** END LICENSE BLOCK *****
|
||||
|
||||
.set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4
|
||||
.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
|
||||
@@ -53,80 +53,80 @@
|
||||
.set f20,20; .set f21,21; .set f22,22; .set f23,23; .set f24,24
|
||||
.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
|
||||
.set f30,30; .set f31,31
|
||||
-
|
||||
- .section ".text"
|
||||
+
|
||||
+ .section ".text"
|
||||
.align 2
|
||||
.globl NS_InvokeByIndex_P
|
||||
.type NS_InvokeByIndex_P,@function
|
||||
|
||||
-#
|
||||
-# NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
|
||||
-# PRUint32 paramCount, nsXPTCVariant* params)
|
||||
-#
|
||||
+//
|
||||
+// NS_InvokeByIndex_P(nsISupports* that, PRUint32 methodIndex,
|
||||
+// PRUint32 paramCount, nsXPTCVariant* params)
|
||||
+//
|
||||
|
||||
NS_InvokeByIndex_P:
|
||||
- stwu sp,-32(sp) # setup standard stack frame
|
||||
- mflr r0 # save LR
|
||||
- stw r3,8(sp) # r3 <= that
|
||||
- stw r4,12(sp) # r4 <= methodIndex
|
||||
- stw r30,16(sp)
|
||||
- stw r31,20(sp)
|
||||
+ stwu sp,-32(sp) // setup standard stack frame
|
||||
+ mflr r0 // save LR
|
||||
+ stw r3,8(sp) // r3 <= that
|
||||
+ stw r4,12(sp) // r4 <= methodIndex
|
||||
+ stw r30,16(sp)
|
||||
+ stw r31,20(sp)
|
||||
|
||||
- stw r0,36(sp) # store LR backchain
|
||||
- mr r31,sp
|
||||
+ stw r0,36(sp) // store LR backchain
|
||||
+ mr r31,sp
|
||||
|
||||
- rlwinm r10,r5,3,0,27 # r10 = (ParamCount * 2 * 4) & ~0x0f
|
||||
- addi r0,r10,96 # reserve stack for GPR and FPR register save area r0 = r10 + 96
|
||||
- lwz r9,0(sp) # r9 = backchain
|
||||
- neg r0,r0
|
||||
- stwux r9,sp,r0 # reserve stack space and save SP backchain
|
||||
+ rlwinm r10,r5,3,0,27 // r10 = (ParamCount * 2 * 4) & ~0x0f
|
||||
+ addi r0,r10,96 // reserve stack for GPR and FPR register save area r0 = r10 + 96
|
||||
+ lwz r9,0(sp) // r9 = backchain
|
||||
+ neg r0,r0
|
||||
+ stwux r9,sp,r0 // reserve stack space and save SP backchain
|
||||
|
||||
- addi r3,sp,8 # r3 <= args
|
||||
- mr r4,r5 # r4 <= paramCount
|
||||
- mr r5,r6 # r5 <= params
|
||||
- add r6,r3,r10 # r6 <= gpregs ( == args + r10 )
|
||||
- mr r30,r6 # store in r30 for use later...
|
||||
- addi r7,r6,32 # r7 <= fpregs ( == gpregs + 32 )
|
||||
+ addi r3,sp,8 // r3 <= args
|
||||
+ mr r4,r5 // r4 <= paramCount
|
||||
+ mr r5,r6 // r5 <= params
|
||||
+ add r6,r3,r10 // r6 <= gpregs ( == args + r10 )
|
||||
+ mr r30,r6 // store in r30 for use later...
|
||||
+ addi r7,r6,32 // r7 <= fpregs ( == gpregs + 32 )
|
||||
|
||||
- bl invoke_copy_to_stack@local # (args, paramCount, params, gpregs, fpregs)
|
||||
+ bl invoke_copy_to_stack@local // (args, paramCount, params, gpregs, fpregs)
|
||||
|
||||
- lfd f1,32(r30) # load FP registers with method parameters
|
||||
- lfd f2,40(r30)
|
||||
- lfd f3,48(r30)
|
||||
- lfd f4,56(r30)
|
||||
- lfd f5,64(r30)
|
||||
- lfd f6,72(r30)
|
||||
- lfd f7,80(r30)
|
||||
- lfd f8,88(r30)
|
||||
+ lfd f1,32(r30) // load FP registers with method parameters
|
||||
+ lfd f2,40(r30)
|
||||
+ lfd f3,48(r30)
|
||||
+ lfd f4,56(r30)
|
||||
+ lfd f5,64(r30)
|
||||
+ lfd f6,72(r30)
|
||||
+ lfd f7,80(r30)
|
||||
+ lfd f8,88(r30)
|
||||
|
||||
- lwz r3,8(r31) # r3 <= that
|
||||
- lwz r4,12(r31) # r4 <= methodIndex
|
||||
- lwz r5,0(r3) # r5 <= vtable ( == *that )
|
||||
-#if !((__GNUC__ == 3 && __GNUC_MINOR__ < 2) || __GXX_ABI_VERSION >= 100) # G++ pre-V3 ABI
|
||||
- addi r4,r4,2 # skip first two vtable entries
|
||||
-#endif
|
||||
+ subi r4,r4,2 # skip first two vtable entries
|
||||
slwi r4,r4,2 # convert to offset ( *= 4 )
|
||||
lwzx r0,r5,r4 # r0 <= methodpointer ( == vtable + offset )
|
||||
+ lwz r3,8(r31) // r3 <= that
|
||||
+ lwz r4,12(r31) // r4 <= methodIndex
|
||||
+ lwz r5,0(r3) // r5 <= vtable ( == *that )
|
||||
+#if !((__GNUC__ == 3 && __GNUC_MINOR__ < 2) || __GXX_ABI_VERSION >= 100) // G++ pre-V3 ABI
|
||||
+ addi r4,r4,2 // skip first two vtable entries
|
||||
#endif
|
||||
- slwi r4,r4,2 # convert to offset ( *= 4 )
|
||||
- lwzx r0,r5,r4 # r0 <= methodpointer ( == vtable + offset )
|
||||
+ slwi r4,r4,2 // convert to offset ( *= 4 )
|
||||
+ lwzx r0,r5,r4 // r0 <= methodpointer ( == vtable + offset )
|
||||
|
||||
- lwz r4,4(r30) # load GP regs with method parameters
|
||||
- lwz r5,8(r30)
|
||||
- lwz r6,12(r30)
|
||||
- lwz r7,16(r30)
|
||||
- lwz r8,20(r30)
|
||||
- lwz r9,24(r30)
|
||||
- lwz r10,28(r30)
|
||||
+ lwz r4,4(r30) // load GP regs with method parameters
|
||||
+ lwz r5,8(r30)
|
||||
+ lwz r6,12(r30)
|
||||
+ lwz r7,16(r30)
|
||||
+ lwz r8,20(r30)
|
||||
+ lwz r9,24(r30)
|
||||
+ lwz r10,28(r30)
|
||||
|
||||
- mtlr r0 # copy methodpointer to LR
|
||||
- blrl # call method
|
||||
-
|
||||
- lwz r30,16(r31) # restore r30 & r31
|
||||
- lwz r31,20(r31)
|
||||
-
|
||||
- lwz r11,0(sp) # clean up the stack
|
||||
- lwz r0,4(r11)
|
||||
- mtlr r0
|
||||
- mr sp,r11
|
||||
+ mtlr r0 // copy methodpointer to LR
|
||||
+ blrl // call method
|
||||
+
|
||||
+ lwz r30,16(r31) // restore r30 & r31
|
||||
+ lwz r31,20(r31)
|
||||
+
|
||||
+ lwz r11,0(sp) // clean up the stack
|
||||
+ lwz r0,4(r11)
|
||||
+ mtlr r0
|
||||
+ mr sp,r11
|
||||
blr
|
||||
|
||||
-# Magic indicating no need for an executable stack
|
||||
+// Magic indicating no need for an executable stack
|
||||
.section .note.GNU-stack, "", @progbits ; .previous
|
||||
|
@ -0,0 +1,170 @@
|
||||
$OpenBSD: patch-xpcom_reflect_xptcall_src_md_unix_xptcstubs_asm_ppc_openbsd_s,v 1.1 2008/09/15 19:20:07 martynas Exp $
|
||||
--- xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_openbsd.s.orig Sun Dec 23 01:57:11 2007
|
||||
+++ xpcom/reflect/xptcall/src/md/unix/xptcstubs_asm_ppc_openbsd.s Sun Sep 14 22:21:55 2008
|
||||
@@ -1,43 +1,43 @@
|
||||
-# -*- Mode: Asm -*-
|
||||
-#
|
||||
-# ***** BEGIN LICENSE BLOCK *****
|
||||
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
-#
|
||||
-# The contents of this file are subject to the Mozilla Public License Version
|
||||
-# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
-# the License. You may obtain a copy of the License at
|
||||
-# http:#www.mozilla.org/MPL/
|
||||
-#
|
||||
-# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
-# for the specific language governing rights and limitations under the
|
||||
-# License.
|
||||
-#
|
||||
-# The Original Code is mozilla.org code.
|
||||
-#
|
||||
-# The Initial Developer of the Original Code is
|
||||
-# Netscape Communications Corporation.
|
||||
-# Portions created by the Initial Developer are Copyright (C) 1999
|
||||
-# the Initial Developer. All Rights Reserved.
|
||||
-#
|
||||
-# Contributor(s):
|
||||
-# Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
|
||||
-# beard@netscape.com (Patrick Beard)
|
||||
-# waterson@netscape.com (Chris Waterson)
|
||||
-#
|
||||
-# Alternatively, the contents of this file may be used under the terms of
|
||||
-# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
-# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
-# of those above. If you wish to allow use of your version of this file only
|
||||
-# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
-# use your version of this file under the terms of the MPL, indicate your
|
||||
-# decision by deleting the provisions above and replace them with the notice
|
||||
-# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
-# the provisions above, a recipient may use your version of this file under
|
||||
-# the terms of any one of the MPL, the GPL or the LGPL.
|
||||
-#
|
||||
-# ***** END LICENSE BLOCK *****
|
||||
+// -*- Mode: Asm -*-
|
||||
+//
|
||||
+// ***** BEGIN LICENSE BLOCK *****
|
||||
+// Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
+//
|
||||
+// The contents of this file are subject to the Mozilla Public License Version
|
||||
+// 1.1 (the "License"); you may not use this file except in compliance with
|
||||
+// the License. You may obtain a copy of the License at
|
||||
+// http://www.mozilla.org/MPL/
|
||||
+//
|
||||
+// Software distributed under the License is distributed on an "AS IS" basis,
|
||||
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
+// for the specific language governing rights and limitations under the
|
||||
+// License.
|
||||
+//
|
||||
+// The Original Code is mozilla.org code.
|
||||
+//
|
||||
+// The Initial Developer of the Original Code is
|
||||
+// Netscape Communications Corporation.
|
||||
+// Portions created by the Initial Developer are Copyright (C) 1999
|
||||
+// the Initial Developer. All Rights Reserved.
|
||||
+//
|
||||
+// Contributor(s):
|
||||
+// Franz.Sirl-kernel@lauterbach.com (Franz Sirl)
|
||||
+// beard@netscape.com (Patrick Beard)
|
||||
+// waterson@netscape.com (Chris Waterson)
|
||||
+//
|
||||
+// Alternatively, the contents of this file may be used under the terms of
|
||||
+// either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
+// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
+// in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
+// of those above. If you wish to allow use of your version of this file only
|
||||
+// under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
+// use your version of this file under the terms of the MPL, indicate your
|
||||
+// decision by deleting the provisions above and replace them with the notice
|
||||
+// and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
+// the provisions above, a recipient may use your version of this file under
|
||||
+// the terms of any one of the MPL, the GPL or the LGPL.
|
||||
+//
|
||||
+// ***** END LICENSE BLOCK *****
|
||||
|
||||
.set r0,0; .set sp,1; .set RTOC,2; .set r3,3; .set r4,4
|
||||
.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
|
||||
@@ -54,29 +54,29 @@
|
||||
.set f25,25; .set f26,26; .set f27,27; .set f28,28; .set f29,29
|
||||
.set f30,30; .set f31,31
|
||||
|
||||
- .section ".text"
|
||||
- .align 2
|
||||
+ .section ".text"
|
||||
+ .align 2
|
||||
.globl SharedStub
|
||||
.type SharedStub,@function
|
||||
|
||||
SharedStub:
|
||||
- stwu sp,-112(sp) # room for
|
||||
- # linkage (8),
|
||||
- # gprData (32),
|
||||
- # fprData (64),
|
||||
- # stack alignment(8)
|
||||
- mflr r0
|
||||
- stw r0,116(sp) # save LR backchain
|
||||
+ stwu sp,-112(sp) // room for
|
||||
+ // linkage (8),
|
||||
+ // gprData (32),
|
||||
+ // fprData (64),
|
||||
+ // stack alignment(8)
|
||||
+ mflr r0
|
||||
+ stw r0,116(sp) // save LR backchain
|
||||
|
||||
- stw r4,12(sp) # save GP registers
|
||||
- stw r5,16(sp) # (n.b. that we don't save r3
|
||||
- stw r6,20(sp) # because PrepareAndDispatch() is savvy)
|
||||
+ stw r4,12(sp) // save GP registers
|
||||
+ stw r5,16(sp) // (n.b. that we don't save r3
|
||||
+ stw r6,20(sp) // because PrepareAndDispatch() is savvy)
|
||||
stw r7,24(sp)
|
||||
stw r8,28(sp)
|
||||
stw r9,32(sp)
|
||||
stw r10,36(sp)
|
||||
|
||||
- stfd f1,40(sp) # save FP registers
|
||||
+ stfd f1,40(sp) // save FP registers
|
||||
stfd f2,48(sp)
|
||||
stfd f3,56(sp)
|
||||
stfd f4,64(sp)
|
||||
@@ -85,23 +85,23 @@ SharedStub:
|
||||
stfd f7,88(sp)
|
||||
stfd f8,96(sp)
|
||||
|
||||
- # r3 has the 'self' pointer already
|
||||
-
|
||||
- mr r4,r11 # r4 <= methodIndex selector, passed
|
||||
- # via r11 in the nsXPTCStubBase::StubXX() call
|
||||
-
|
||||
- addi r5,sp,120 # r5 <= pointer to callers args area,
|
||||
- # beyond r3-r10/f1-f8 mapped range
|
||||
-
|
||||
- addi r6,sp,8 # r6 <= gprData
|
||||
- addi r7,sp,40 # r7 <= fprData
|
||||
-
|
||||
- bl PrepareAndDispatch@local # Go!
|
||||
-
|
||||
- lwz r0,116(sp) # restore LR
|
||||
+ // r3 has the 'self' pointer already
|
||||
+
|
||||
+ mr r4,r11 // r4 <= methodIndex selector, passed
|
||||
+ // via r11 in the nsXPTCStubBase::StubXX() call
|
||||
+
|
||||
+ addi r5,sp,120 // r5 <= pointer to callers args area,
|
||||
+ // beyond r3-r10/f1-f8 mapped range
|
||||
+
|
||||
+ addi r6,sp,8 // r6 <= gprData
|
||||
+ addi r7,sp,40 // r7 <= fprData
|
||||
+
|
||||
+ bl PrepareAndDispatch@local // Go!
|
||||
+
|
||||
+ lwz r0,116(sp) // restore LR
|
||||
mtlr r0
|
||||
- la sp,112(sp) # clean up the stack
|
||||
+ la sp,112(sp) // clean up the stack
|
||||
blr
|
||||
|
||||
-# Magic indicating no need for an executable stack
|
||||
+// Magic indicating no need for an executable stack
|
||||
.section .note.GNU-stack, "", @progbits ; .previous
|
Loading…
Reference in New Issue
Block a user