Initial import from FreeBSD RELENG_4:
[games.git] / lib / libcr / alpha / sys / cerror.S
1 /* $FreeBSD: src/lib/libc/alpha/sys/cerror.S,v 1.5 1999/08/27 23:58:11 peter Exp $      */
2 /*      From: NetBSD: cerror.S,v 1.4 1996/11/08 00:52:46 cgd Exp        */
3
4 /*
5  * Copyright (c) 1994, 1995 Carnegie-Mellon University.
6  * All rights reserved.
7  *
8  * Author: Chris G. Demetriou
9  * 
10  * Permission to use, copy, modify and distribute this software and
11  * its documentation is hereby granted, provided that both the copyright
12  * notice and this permission notice appear in all copies of the
13  * software, derivative works or modified versions, and any portions
14  * thereof, and that both notices appear in supporting documentation.
15  * 
16  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
17  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 
18  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19  * 
20  * Carnegie Mellon requests users of this software to return to
21  *
22  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
23  *  School of Computer Science
24  *  Carnegie Mellon University
25  *  Pittsburgh PA 15213-3890
26  *
27  * any improvements or extensions that they make and grant Carnegie the
28  * rights to redistribute these changes.
29  */
30
31 #include "SYS.h"
32
33 #define FRAME_SIZE              16
34 #define FRAME_RA_OFFSET         0
35 #define FRAME_V0_OFFSET         8
36
37 NESTED(.cerror, 0, FRAME_SIZE, ra, IM_RA|IM_V0, 0)
38         br      t0, L1
39 L1:     LDGP(t0)
40
41         lda     sp, -FRAME_SIZE(sp)
42         stq     ra, FRAME_RA_OFFSET(sp)
43         stq     v0, FRAME_V0_OFFSET(sp)
44
45         CALL(__error)
46
47         ldq     t0, FRAME_V0_OFFSET(sp)
48         stl     t0, 0(v0)
49
50         ldiq    v0, -1
51         ldq     ra, FRAME_RA_OFFSET(sp)
52         lda     sp, FRAME_SIZE(sp)
53         RET
54 END(.cerror)