xref: /netbsd-src/lib/libc/arch/hppa/sys/cerror.S (revision 2af01421ec58ee0b13f04872508d2ab824742d69)
1*2af01421Sskrll/*	$NetBSD: cerror.S,v 1.6 2020/05/05 06:20:55 skrll Exp $	*/
27bdf35d6Sskrll
37bdf35d6Sskrll/*-
47bdf35d6Sskrll * Copyright (c) 2004 The NetBSD Foundation, Inc.
57bdf35d6Sskrll * All rights reserved.
67bdf35d6Sskrll *
77bdf35d6Sskrll * This code is derived from software contributed to The NetBSD Foundation
87bdf35d6Sskrll * by Nick Hudson
97bdf35d6Sskrll *
107bdf35d6Sskrll * Redistribution and use in source and binary forms, with or without
117bdf35d6Sskrll * modification, are permitted provided that the following conditions
127bdf35d6Sskrll * are met:
137bdf35d6Sskrll * 1. Redistributions of source code must retain the above copyright
147bdf35d6Sskrll *    notice, this list of conditions and the following disclaimer.
157bdf35d6Sskrll * 2. Redistributions in binary form must reproduce the above copyright
167bdf35d6Sskrll *    notice, this list of conditions and the following disclaimer in the
177bdf35d6Sskrll *    documentation and/or other materials provided with the distribution.
187bdf35d6Sskrll *
197bdf35d6Sskrll * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
207bdf35d6Sskrll * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
217bdf35d6Sskrll * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
227bdf35d6Sskrll * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
237bdf35d6Sskrll * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
247bdf35d6Sskrll * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
257bdf35d6Sskrll * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
267bdf35d6Sskrll * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
277bdf35d6Sskrll * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
287bdf35d6Sskrll * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
297bdf35d6Sskrll * POSSIBILITY OF SUCH DAMAGE.
307bdf35d6Sskrll */
31aeb58ad6Sskrll
32aeb58ad6Sskrll#include "SYS.h"
33aeb58ad6Sskrll
34aeb58ad6Sskrll#ifdef _REENTRANT
35aeb58ad6SskrllENTRY(__cerror,HPPA_FRAME_SIZE)
36aeb58ad6Sskrll#else
37aeb58ad6SskrllLEAF_ENTRY(__cerror)
38aeb58ad6Sskrll#endif
39aeb58ad6Sskrll#ifdef _REENTRANT
40aeb58ad6Sskrll	stw	%rp, HPPA_FRAME_CRP(%sp)
41c2f33bd7Schs	stw	%t1, HPPA_FRAME_ARG(0)(%sp)
42aeb58ad6Sskrll	ldo	HPPA_FRAME_SIZE(%sp),%sp
43aeb58ad6Sskrll	bl	__errno, %rp
44aeb58ad6Sskrll	 nop
45aeb58ad6Sskrll	ldo	-HPPA_FRAME_SIZE(%sp), %sp
46c2f33bd7Schs	ldw	HPPA_FRAME_ARG(0)(%sp), %t1
47aeb58ad6Sskrll	ldw	HPPA_FRAME_CRP(%sp), %rp
48c2f33bd7Schs	stw	%t1, 0(%ret0)
49aeb58ad6Sskrll#else
504d12bfcdSjoerg#ifdef __PIC__
51aeb58ad6Sskrll	addil	LT%errno, %r19
52aeb58ad6Sskrll	ldw	RT%errno(%r1), %r1
53aeb58ad6Sskrll	stw	%t1, 0(%r1)
54aeb58ad6Sskrll#else
55aeb58ad6Sskrll	ldil	L%errno, %r1
56aeb58ad6Sskrll	stw	%t1, R%errno(%r1)
57aeb58ad6Sskrll#endif
58aeb58ad6Sskrll#endif
59aeb58ad6Sskrll	ldi	-1, %ret0
60aeb58ad6Sskrll	bv	%r0(%rp)
61aeb58ad6Sskrll	 ldi	-1, %ret1
62aeb58ad6SskrllEXIT(__cerror)
63