2 * Copyright 2015, Cyril Bur, IBM Corp.
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
10 #include "../basic_asm.h"
12 #define PUSH_VMX(pos,reg) \
38 #define POP_VMX(pos,reg) \
64 # Carefull this will 'clobber' vmx (by design)
65 # Don't call this from C
94 # Should be safe from C, only touches r4, r5 and v0,v1,v2
98 li r3,1 # assume a bad result
159 li r5,STACK_FRAME_LOCAL(0,0)
162 cmpdi r0,0xffffffffffffffff
165 1: POP_BASIC_STACK(16)
171 # r3 holds pointer to where to put the result of fork
172 # r4 holds pointer to the pid
173 # v20-v31 are non-volatile
174 PUSH_BASIC_STACK(512)
175 std r3,STACK_FRAME_PARAM(0)(sp) # Address of varray
176 std r4,STACK_FRAME_PARAM(1)(sp) # address of pid
177 PUSH_VMX(STACK_FRAME_LOCAL(2,0),r4)
184 # Pass the result of fork back to the caller
185 ld r9,STACK_FRAME_PARAM(1)(sp)
188 ld r3,STACK_FRAME_PARAM(0)(sp)
192 POP_VMX(STACK_FRAME_LOCAL(2,0),r4)