11bc15386SPeter Tyser/* longjmp for PowerPC. 21bc15386SPeter Tyser Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. 31bc15386SPeter Tyser This file is part of the GNU C Library. 41bc15386SPeter Tyser 5*eee479cfSWolfgang Denk * SPDX-License-Identifier: LGPL-2.1+ 6*eee479cfSWolfgang Denk */ 71bc15386SPeter Tyser 81bc15386SPeter Tyser#include <ppc_asm.tmpl> 91bc15386SPeter Tyser 101bc15386SPeter Tyser# define JB_GPR1 0 /* Also known as the stack pointer */ 111bc15386SPeter Tyser# define JB_GPR2 1 121bc15386SPeter Tyser# define JB_LR 2 /* The address we will return to */ 131bc15386SPeter Tyser# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */ 141bc15386SPeter Tyser# define JB_CR 21 /* Condition code registers. */ 151bc15386SPeter Tyser# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */ 161bc15386SPeter Tyser# define JB_SIZE (58*4) 171bc15386SPeter Tyser 181bc15386SPeter Tyser#define FP(x...) x 191bc15386SPeter Tyser#define FP(x...) x 201bc15386SPeter Tyser 211bc15386SPeter Tyser.globl ppc_longjmp; 221bc15386SPeter Tyser 231bc15386SPeter Tyserppc_longjmp: 241bc15386SPeter Tyser lwz r1,(JB_GPR1*4)(r3) 251bc15386SPeter Tyser lwz r2,(JB_GPR2*4)(r3) 261bc15386SPeter Tyser lwz r0,(JB_LR*4)(r3) 271bc15386SPeter Tyser lwz r14,((JB_GPRS+0)*4)(r3) 281bc15386SPeter TyserFP( lfd 14,((JB_FPRS+0*2)*4)(r3)) 291bc15386SPeter Tyser lwz r15,((JB_GPRS+1)*4)(r3) 301bc15386SPeter TyserFP( lfd 15,((JB_FPRS+1*2)*4)(r3)) 311bc15386SPeter Tyser lwz r16,((JB_GPRS+2)*4)(r3) 321bc15386SPeter TyserFP( lfd 16,((JB_FPRS+2*2)*4)(r3)) 331bc15386SPeter Tyser lwz r17,((JB_GPRS+3)*4)(r3) 341bc15386SPeter TyserFP( lfd 17,((JB_FPRS+3*2)*4)(r3)) 351bc15386SPeter Tyser lwz r18,((JB_GPRS+4)*4)(r3) 361bc15386SPeter TyserFP( lfd 18,((JB_FPRS+4*2)*4)(r3)) 371bc15386SPeter Tyser lwz r19,((JB_GPRS+5)*4)(r3) 381bc15386SPeter TyserFP( lfd 19,((JB_FPRS+5*2)*4)(r3)) 391bc15386SPeter Tyser lwz r20,((JB_GPRS+6)*4)(r3) 401bc15386SPeter TyserFP( lfd 20,((JB_FPRS+6*2)*4)(r3)) 411bc15386SPeter Tyser mtlr r0 421bc15386SPeter Tyser lwz r21,((JB_GPRS+7)*4)(r3) 431bc15386SPeter TyserFP( lfd 21,((JB_FPRS+7*2)*4)(r3)) 441bc15386SPeter Tyser lwz r22,((JB_GPRS+8)*4)(r3) 451bc15386SPeter TyserFP( lfd 22,((JB_FPRS+8*2)*4)(r3)) 461bc15386SPeter Tyser lwz r0,(JB_CR*4)(r3) 471bc15386SPeter Tyser lwz r23,((JB_GPRS+9)*4)(r3) 481bc15386SPeter TyserFP( lfd 23,((JB_FPRS+9*2)*4)(r3)) 491bc15386SPeter Tyser lwz r24,((JB_GPRS+10)*4)(r3) 501bc15386SPeter TyserFP( lfd 24,((JB_FPRS+10*2)*4)(r3)) 511bc15386SPeter Tyser lwz r25,((JB_GPRS+11)*4)(r3) 521bc15386SPeter TyserFP( lfd 25,((JB_FPRS+11*2)*4)(r3)) 531bc15386SPeter Tyser mtcrf 0xFF,r0 541bc15386SPeter Tyser lwz r26,((JB_GPRS+12)*4)(r3) 551bc15386SPeter TyserFP( lfd 26,((JB_FPRS+12*2)*4)(r3)) 561bc15386SPeter Tyser lwz r27,((JB_GPRS+13)*4)(r3) 571bc15386SPeter TyserFP( lfd 27,((JB_FPRS+13*2)*4)(r3)) 581bc15386SPeter Tyser lwz r28,((JB_GPRS+14)*4)(r3) 591bc15386SPeter TyserFP( lfd 28,((JB_FPRS+14*2)*4)(r3)) 601bc15386SPeter Tyser lwz r29,((JB_GPRS+15)*4)(r3) 611bc15386SPeter TyserFP( lfd 29,((JB_FPRS+15*2)*4)(r3)) 621bc15386SPeter Tyser lwz r30,((JB_GPRS+16)*4)(r3) 631bc15386SPeter TyserFP( lfd 30,((JB_FPRS+16*2)*4)(r3)) 641bc15386SPeter Tyser lwz r31,((JB_GPRS+17)*4)(r3) 651bc15386SPeter TyserFP( lfd 31,((JB_FPRS+17*2)*4)(r3)) 661bc15386SPeter Tyser mr r3,r4 671bc15386SPeter Tyser blr 68