Blame sysdeps/alpha/bits/setjmp.h

Packit Service 82fcde
/* Define the machine-dependent type `jmp_buf'.  Alpha version.
Packit Service 82fcde
   Copyright (C) 1992-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library.  If not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef _BITS_SETJMP_H
Packit Service 82fcde
#define _BITS_SETJMP_H  1
Packit Service 82fcde
Packit Service 82fcde
#if !defined _SETJMP_H && !defined _PTHREAD_H
Packit Service 82fcde
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
Packit Service 82fcde
   We use an array of 'long int' instead, to make writing the
Packit Service 82fcde
   assembler easier. Naturally, user code should not depend on
Packit Service 82fcde
   either representation. */
Packit Service 82fcde
Packit Service 82fcde
/*
Packit Service 82fcde
 * Integer registers:
Packit Service 82fcde
 *    $0 is the return value (va);
Packit Service 82fcde
 *    $1-$8, $22-$25, $28 are call-used (t0-t7, t8-t11, at);
Packit Service 82fcde
 *    $9-$14 we save here (s0-s5);
Packit Service 82fcde
 *    $15 is the FP and we save it here (fp or s6);
Packit Service 82fcde
 *    $16-$21 are input arguments (call-used) (a0-a5);
Packit Service 82fcde
 *    $26 is the return PC and we save it here (ra);
Packit Service 82fcde
 *    $27 is the procedure value (i.e., the address of __setjmp) (pv or t12);
Packit Service 82fcde
 *    $29 is the global pointer, which the caller will reconstruct
Packit Service 82fcde
 *        from the return address restored in $26 (gp);
Packit Service 82fcde
 *    $30 is the stack pointer and we save it here (sp);
Packit Service 82fcde
 *    $31 is always zero (zero).
Packit Service 82fcde
 *
Packit Service 82fcde
 * Floating-point registers:
Packit Service 82fcde
 *    $f0 is the floating return value;
Packit Service 82fcde
 *    $f1, $f10-$f15, $f22-$f30 are call-used;
Packit Service 82fcde
 *    $f2-$f9 we save here;
Packit Service 82fcde
 *    $f16-$21 are input args (call-used);
Packit Service 82fcde
 *    $f31 is always zero.
Packit Service 82fcde
 *
Packit Service 82fcde
 * Note that even on Alpha hardware that does not have an FPU (there
Packit Service 82fcde
 * isn't such a thing currently) it is required to implement the FP
Packit Service 82fcde
 * registers.
Packit Service 82fcde
 */
Packit Service 82fcde
Packit Service 82fcde
#ifndef __ASSEMBLY__
Packit Service 82fcde
typedef long int __jmp_buf[17];
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#endif  /* bits/setjmp.h */