head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.72 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.70 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.68 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.66 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.64 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.62 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.60 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.58 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.56 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.54 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.52 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.50 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.48 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.46 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.44 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.42 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.40 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.38 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.36 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.34 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.32 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.30 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.28 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.24 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.4 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.26 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.22 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.20 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.18 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.16 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.14 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.12 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.10 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.8 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.6 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.2 pkgsrc-2017Q2-base:1.1; locks; strict; comment @// @; 1.1 date 2017.04.27.01.55.57; author ryoon; state Exp; branches; next ; commitid 6CghKLrfFNzt67Pz; desc @@ 1.1 log @Import firefox52-52.1.0 as www/firefox52. Mozilla Firefox is a free, open-source and cross-platform web browser for Windows, Linux, MacOS X and many other operating systems. It is fast and easy to use, and offers many advantages over other web browsers, such as tabbed browsing and the ability to block pop-up windows. Firefox also offers excellent bookmark and history management, and it can be extended by developers using industry standards such as XML, CSS, JavaScript, C++, etc. Many extensions are available. @ text @$NetBSD: patch-xpcom_reflect_xptcall_md_unix_xptcinvoke__sparc64__netbsd.cpp,v 1.1 2014/10/15 13:43:32 ryoon Exp $ --- xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp.orig 2014-10-14 18:49:14.000000000 +0000 +++ xpcom/reflect/xptcall/md/unix/xptcinvoke_sparc64_netbsd.cpp @@@@ -0,0 +1,84 @@@@ +/* -*- 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) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ + +/* Platform specific code to invoke XPCOM methods on native objects */ + +#include "xptcprivate.h" + +#if !defined(__sparc64__) && !defined(_LP64) +#error "This code is for Sparc64 only" +#endif + +extern "C" PRUint32 +invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s) +{ + /* + We need to copy the parameters for this function to locals and use them + from there since the parameters occupy the same stack space as the stack + we're trying to populate. + */ + PRUint64 *l_d = d; + nsXPTCVariant *l_s = s; + PRUint64 l_paramCount = paramCount; + PRUint64 regCount = 0; // return the number of registers to load from the stack + + for(PRUint64 i = 0; i < l_paramCount; i++, l_d++, l_s++) + { + if (regCount < 5) regCount++; + + if (l_s->IsPtrData()) + { + *l_d = (PRUint64)l_s->ptr; + continue; + } + switch (l_s->type) + { + case nsXPTType::T_I8 : *((PRInt64*)l_d) = l_s->val.i8; break; + case nsXPTType::T_I16 : *((PRInt64*)l_d) = l_s->val.i16; break; + case nsXPTType::T_I32 : *((PRInt64*)l_d) = l_s->val.i32; break; + case nsXPTType::T_I64 : *((PRInt64*)l_d) = l_s->val.i64; break; + + case nsXPTType::T_U8 : *((PRUint64*)l_d) = l_s->val.u8; break; + case nsXPTType::T_U16 : *((PRUint64*)l_d) = l_s->val.u16; break; + case nsXPTType::T_U32 : *((PRUint64*)l_d) = l_s->val.u32; break; + case nsXPTType::T_U64 : *((PRUint64*)l_d) = l_s->val.u64; break; + + /* in the case of floats, we want to put the bits in to the + 64bit space right justified... floats in the paramter array on + sparcv9 use odd numbered registers.. %f1, %f3, so we have to skip + the space that would be occupied by %f0, %f2, etc. + */ + case nsXPTType::T_FLOAT : *(((float*)l_d) + 1) = l_s->val.f; break; + case nsXPTType::T_DOUBLE: *((double*)l_d) = l_s->val.d; break; + case nsXPTType::T_BOOL : *((PRInt64*)l_d) = l_s->val.b; break; + case nsXPTType::T_CHAR : *((PRUint64*)l_d) = l_s->val.c; break; + case nsXPTType::T_WCHAR : *((PRInt64*)l_d) = l_s->val.wc; break; + + default: + // all the others are plain pointer types + *((void**)l_d) = l_s->val.p; + break; + } + } + + return regCount; +} @