1/* -*- Mode: asm; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * Version: MPL 1.1
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7
8  .LEVEL  1.1
9  .TEXT
10  .ALIGN 4
11
12curframesz:
13  .EQU 128
14
15
16; SharedStub has stack size of 128 bytes
17
18lastframesz:
19  .EQU 64
20
21; the StubN C++ function has a small stack size of 64 bytes
22
23
24.globl SharedStub
25  .type SharedStub, @function
26
27SharedStub:
28  .PROC
29  .CALLINFO CALLER,FRAME=80,SAVE_RP
30
31  .ENTRY
32        STW     %rp,-20(%sp)
33        LDO     128(%sp),%sp
34
35        STW     %r19,-32(%r30)
36        STW     %r26,-36-curframesz(%r30) ; save arg0 in previous frame
37
38        LDO     -80(%r30),%r28
39        FSTD,MA %fr5,8(%r28)   ; save darg0
40        FSTD,MA %fr7,8(%r28)   ; save darg1
41        FSTW,MA %fr4L,4(%r28)  ; save farg0
42        FSTW,MA %fr5L,4(%r28)  ; save farg1
43        FSTW,MA %fr6L,4(%r28)  ; save farg2
44        FSTW,MA %fr7L,4(%r28)  ; save farg3
45
46        ; Former value of register 26 is already properly saved by StubN,
47        ; but register 25-23 are not because of the argument mismatch
48        STW     %r25,-40-curframesz-lastframesz(%r30) ; save r25
49        STW     %r24,-44-curframesz-lastframesz(%r30) ; save r24
50        STW     %r23,-48-curframesz-lastframesz(%r30) ; save r23
51        COPY    %r26,%r25                             ; method index is arg1
52        LDW     -36-curframesz-lastframesz(%r30),%r26 ; self is arg0
53        LDO     -40-curframesz-lastframesz(%r30),%r24 ; normal args is arg2
54        LDO     -80(%r30),%r23                        ; floating args is arg3
55
56        .CALL   ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR ;in=23-26;out=28;
57        BL     PrepareAndDispatch, %r31
58        COPY    %r31,%r2
59
60        LDW     -32(%r30),%r19
61
62        LDW     -148(%sp),%rp
63        LDO     -128(%sp),%sp
64
65
66        BV,N     (%rp)
67        NOP
68        NOP
69
70  .EXIT
71  .PROCEND        ;in=26;out=28;
72
73  .SIZE SharedStub, .-SharedStub
74