xref: /netbsd/lib/libc/arch/alpha/sys/cerror.S (revision d220ca5b)
1*d220ca5bScgd/* $NetBSD: cerror.S,v 1.6 2000/06/14 06:49:03 cgd Exp $ */
2e4f5181dScgd
3e4f5181dScgd/*
4e4f5181dScgd * Copyright (c) 1994, 1995 Carnegie-Mellon University.
5e4f5181dScgd * All rights reserved.
6e4f5181dScgd *
7e4f5181dScgd * Author: Chris G. Demetriou
8e4f5181dScgd *
9e4f5181dScgd * Permission to use, copy, modify and distribute this software and
10e4f5181dScgd * its documentation is hereby granted, provided that both the copyright
11e4f5181dScgd * notice and this permission notice appear in all copies of the
12e4f5181dScgd * software, derivative works or modified versions, and any portions
13e4f5181dScgd * thereof, and that both notices appear in supporting documentation.
14e4f5181dScgd *
15e4f5181dScgd * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
16e4f5181dScgd * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
17e4f5181dScgd * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
18e4f5181dScgd *
19e4f5181dScgd * Carnegie Mellon requests users of this software to return to
20e4f5181dScgd *
21e4f5181dScgd *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
22e4f5181dScgd *  School of Computer Science
23e4f5181dScgd *  Carnegie Mellon University
24e4f5181dScgd *  Pittsburgh PA 15213-3890
25e4f5181dScgd *
26e4f5181dScgd * any improvements or extensions that they make and grant Carnegie the
27e4f5181dScgd * rights to redistribute these changes.
28e4f5181dScgd */
29e4f5181dScgd
30e4f5181dScgd#include "SYS.h"
31e4f5181dScgd
321ae38b64Scgd#ifdef _REENTRANT
331ae38b64Scgd#define	FRAME_SIZE		16
341ae38b64Scgd#define	FRAME_RA_OFFSET		0
351ae38b64Scgd#define	FRAME_V0_OFFSET		8
361ae38b64Scgd#endif
37e4f5181dScgd
381ae38b64Scgd#ifdef _REENTRANT
396348b7d5SkleinkNESTED(__cerror, 0, FRAME_SIZE, ra, IM_RA|IM_V0, 0)
401ae38b64Scgd#else
416348b7d5SkleinkLEAF(__cerror, 0)
421ae38b64Scgd#endif
438df506adScgd	br	t0, L1
4455c6bc90ScgdL1:	LDGP(t0)
451ae38b64Scgd
461ae38b64Scgd#ifdef _REENTRANT
471ae38b64Scgd	lda	sp, -FRAME_SIZE(sp)
481ae38b64Scgd	stq	ra, FRAME_RA_OFFSET(sp)
491ae38b64Scgd	stq	v0, FRAME_V0_OFFSET(sp)
501ae38b64Scgd
511ae38b64Scgd	CALL(__errno)
521ae38b64Scgd
531ae38b64Scgd	ldq	t0, FRAME_V0_OFFSET(sp)
541ae38b64Scgd	stl	t0, 0(v0)
551ae38b64Scgd#else
56e4f5181dScgd	stl	v0, errno
571ae38b64Scgd#endif
581ae38b64Scgd
59e4f5181dScgd	ldiq	v0, -1
601ae38b64Scgd#ifdef _REENTRANT
611ae38b64Scgd	ldq	ra, FRAME_RA_OFFSET(sp)
621ae38b64Scgd	lda	sp, FRAME_SIZE(sp)
631ae38b64Scgd#endif
64e4f5181dScgd	RET
656348b7d5SkleinkEND(__cerror)
66