@@ -82,7 +82,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8282#endif
8383
8484#ifdef __64BIT__
85- #define STACKSIZE 400
85+ #define STACKSIZE 32000
8686#define ALPHA_R_SP 296 (SP)
8787#define ALPHA_I_SP 304 (SP)
8888#define FZERO 312 (SP)
@@ -136,6 +136,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
136136#define alpha_sr vs30
137137#define alpha_si vs31
138138
139+ #define FRAMEPOINTER r12
139140
140141#define BBUFFER r14
141142#define L r15
@@ -161,6 +162,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
161162 PROLOGUE
162163 PROFCODE
163164
165+ mr FRAMEPOINTER, SP
166+ addi SP, SP, -STACKSIZE
167+ addi SP, SP, -STACKSIZE
168+ addi SP, SP, -STACKSIZE
164169 addi SP, SP, -STACKSIZE
165170 li r0, 0
166171
@@ -233,37 +238,37 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
233238
234239#ifdef linux
235240#ifdef __64BIT__
236- ld LDC, FRAMESLOT(0 ) + STACKSIZE(SP )
241+ ld LDC, FRAMESLOT(0 ) + 0 (FRAMEPOINTER )
237242#endif
238243#endif
239244
240245#if defined(_AIX) || defined(__APPLE__)
241246#ifdef __64BIT__
242- ld LDC, FRAMESLOT(0 ) + STACKSIZE(SP )
247+ ld LDC, FRAMESLOT(0 ) + 0 (FRAMEPOINTER )
243248#else
244249#ifdef DOUBLE
245- lwz B, FRAMESLOT(0 ) + STACKSIZE(SP )
246- lwz C, FRAMESLOT(1 ) + STACKSIZE(SP )
247- lwz LDC, FRAMESLOT(2 ) + STACKSIZE(SP )
250+ lwz B, FRAMESLOT(0 ) + 0 (FRAMEPOINTER )
251+ lwz C, FRAMESLOT(1 ) + 0 (FRAMEPOINTER )
252+ lwz LDC, FRAMESLOT(2 ) + 0 (FRAMEPOINTER )
248253#else
249- lwz LDC, FRAMESLOT(0 ) + STACKSIZE(SP )
254+ lwz LDC, FRAMESLOT(0 ) + 0 (FRAMEPOINTER )
250255#endif
251256#endif
252257#endif
253258
254259#ifdef TRMMKERNEL
255260#if defined(linux) && defined(__64BIT__)
256- ld OFFSET, FRAMESLOT(1 ) + STACKSIZE(SP )
261+ ld OFFSET, FRAMESLOT(1 ) + 0 (FRAMEPOINTER )
257262#endif
258263
259264#if defined(_AIX) || defined(__APPLE__)
260265#ifdef __64BIT__
261- ld OFFSET, FRAMESLOT(1 ) + STACKSIZE(SP )
266+ ld OFFSET, FRAMESLOT(1 ) + 0 (FRAMEPOINTER )
262267#else
263268#ifdef DOUBLE
264- lwz OFFSET, FRAMESLOT(3 ) + STACKSIZE(SP )
269+ lwz OFFSET, FRAMESLOT(3 ) + 0 (FRAMEPOINTER )
265270#else
266- lwz OFFSET, FRAMESLOT(1 ) + STACKSIZE(SP )
271+ lwz OFFSET, FRAMESLOT(1 ) + 0 (FRAMEPOINTER )
267272#endif
268273#endif
269274#endif
@@ -290,9 +295,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
290295 li o32 , 32
291296 li o48 , 48
292297
293- li T1, 256
294- slwi T1, T1, 9 // 131072
295- sub BBUFFER, A , T1 // temp buffer for B unrolled
298+ addi BBUFFER, SP, 512 + 4096
299+ li T1, -4096
300+ and BBUFFER, BBUFFER , T1
296301
297302
298303#ifdef __64BIT__
@@ -392,6 +397,9 @@ L999:
392397#endif
393398
394399 addi SP, SP, STACKSIZE
400+ addi SP, SP, STACKSIZE
401+ addi SP, SP, STACKSIZE
402+ addi SP, SP, STACKSIZE
395403
396404 blr
397405
0 commit comments