Fix pread consolidation on ports that require argument alignment
[glibc.git] / sysdeps / microblaze / __longjmp.S
blob647a950896cccd1d578397197019c7dc709484b4
1 /* Copyright (C) 1997-2016 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public License as
7    published by the Free Software Foundation; either version 2.1 of the
8    License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library.  If not, see
17    <http://www.gnu.org/licenses/>.  */
19 #include <sysdep.h>
21 /* Jump to the position specified by ENV, causing the
22    setjmp call there to return VAL, or 1 if VAL is 0.  */
24 /* void __longjmp (__jmp_buf env, int val) */
26 ENTRY(__longjmp)
27     lwi   r1,r5,0
28     lwi   r2,r5,4
29     lwi   r13,r5,8
30     lwi   r14,r5,12
31     lwi   r15,r5,16
32     lwi   r16,r5,20
33     lwi   r17,r5,24
34     lwi   r18,r5,28
35     lwi   r19,r5,32
36     lwi   r20,r5,36
37     lwi   r21,r5,40
38     lwi   r22,r5,44
39     lwi   r23,r5,48
40     lwi   r24,r5,52
41     lwi   r25,r5,56
42     lwi   r26,r5,60
43     lwi   r27,r5,64
44     lwi   r28,r5,68
45     lwi   r29,r5,72
46     lwi   r30,r5,76
47     lwi   r31,r5,80
48     addk  r3,r6,r0
49     beqi  r3,L(return_1)
50     rtsd  r15,8
51     nop
52 L(return_1):
53     rtsd  r15,8
54     addik r3,r0,1       /* delay slot.  */
55 END(__longjmp)