diff options
Diffstat (limited to 'www/firefox52/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s')
-rw-r--r-- | www/firefox52/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/www/firefox52/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s b/www/firefox52/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s new file mode 100644 index 00000000000..03ab133df3e --- /dev/null +++ b/www/firefox52/patches/patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s @@ -0,0 +1,71 @@ +$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcstubs__asm__sparc64__netbsd.s,v 1.1 2017/04/27 01:55:57 ryoon Exp $ + +--- xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s.orig 2014-10-14 18:49:14.000000000 +0000 ++++ xpcom/reflect/xptcall/md/unix/xptcstubs_asm_sparc64_netbsd.s +@@ -0,0 +1,66 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- ++ * ++ * The contents of this file are subject to the Netscape 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/NPL/ ++ * ++ * 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 Netscape are ++ * Copyright (C) 1999 Netscape Communications Corporation. All ++ * Rights Reserved. ++ * ++ * Contributor(s): ++ */ ++ ++ .global SharedStub ++ ++/* ++ in the frame for the function that called SharedStub are the ++ rest of the parameters we need ++ ++*/ ++ ++SharedStub: ++! we don't create a new frame yet, but work within the frame of the calling ++! function to give ourselves the other parameters we want ++ ++ mov %o0, %o1 ! shuffle the index up to 2nd place ++ mov %i0, %o0 ! the original 'this' ++ add %fp, 0x7ff + 136, %o2 ! previous stack top adjusted to the first argument slot (beyond 'this') ++ ++! save off the original incoming parameters that arrived in ++! registers, the ABI guarantees the space for us to do this ++ stx %i1, [%fp + 0x7ff + 136] ++ stx %i2, [%fp + 0x7ff + 144] ++ stx %i3, [%fp + 0x7ff + 152] ++ stx %i4, [%fp + 0x7ff + 160] ++ stx %i5, [%fp + 0x7ff + 168] ++! now we can build our own stack frame ++ save %sp,-(128 + 64),%sp ! room for the register window and ++ ! struct pointer, rounded up to 0 % 64 ++! our function now appears to have been called ++! as SharedStub(nsISupports* that, PRUint32 index, PRUint32* args) ++! so we can just copy these through ++ ++ mov %i0, %o0 ++ mov %i1, %o1 ++ mov %i2, %o2 ++ call PrepareAndDispatch ++ nop ++ mov %o0,%i0 ! propagate return value ++ b .LL1 ++ nop ++.LL1: ++ ret ++ restore ++ ++ .size SharedStub, .-SharedStub ++ .type SharedStub, #function |