11f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm/* libunwind - a platform-independent unwind library
23dd5ca671315720501c7e2538547742a230892ddhp.com!davidm   Copyright (C) 2003-2004 Hewlett-Packard Co
31f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
41f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
51f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmThis file is part of libunwind.
61f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
71f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining
81f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidma copy of this software and associated documentation files (the
91f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm"Software"), to deal in the Software without restriction, including
101f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish,
111f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to
121f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to
131f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmthe following conditions:
141f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
151f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmThe above copyright notice and this permission notice shall be
161f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmincluded in all copies or substantial portions of the Software.
171f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
181f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
191f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
201f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
211f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
221f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
231f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
241f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
251f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
263dd5ca671315720501c7e2538547742a230892ddhp.com!davidm#include "jmpbuf.h"
273dd5ca671315720501c7e2538547742a230892ddhp.com!davidm
281f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	.align 32
291f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
301f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	.global _setjmp
311f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
321f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	.proc _setjmp
331f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
341f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm_setjmp:
351f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	mov r2 = ar.bsp
363dd5ca671315720501c7e2538547742a230892ddhp.com!davidm	st8 [r32] = r12			// jmp_buf[JB_SP] = sp
371f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	mov r3 = rp
381f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
393dd5ca671315720501c7e2538547742a230892ddhp.com!davidm	adds r16 = JB_RP*8, r32
403dd5ca671315720501c7e2538547742a230892ddhp.com!davidm	adds r17 = JB_BSP*8, r32
411f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	mov r8 = 0
421f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	;;
433dd5ca671315720501c7e2538547742a230892ddhp.com!davidm	st8 [r16] = r3		// jmp_buf[JB_RP] = rp
443dd5ca671315720501c7e2538547742a230892ddhp.com!davidm	st8 [r17] = r2		// jmp_buf[JB_BSP] = bsp
451f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	br.ret.sptk.many rp
461f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm
471f694b02c7602db3df9a1147ee71f3c57f11773fhomeip.net!davidm	.endp _setjmp
4857e569646368cb730f028ecf1732143474e3e642Jan Kratochvil#ifdef __linux__
4957e569646368cb730f028ecf1732143474e3e642Jan Kratochvil	/* We do not need executable stack.  */
5057e569646368cb730f028ecf1732143474e3e642Jan Kratochvil	.section	.note.GNU-stack,"",@progbits
5157e569646368cb730f028ecf1732143474e3e642Jan Kratochvil#endif
52