1/* $NetBSD: setjmp.S,v 1.1.1.1 2018/08/16 18:17:47 jmcneill Exp $ */ 2 3/* 4 * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved. 5 * This program and the accompanying materials are licensed and made 6available 7 * under the terms and conditions of the BSD License which accompanies 8this 9 * distribution. The full text of the license may be found at 10 * http://opensource.org/licenses/bsd-license.php. 11 * 12 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" 13BASIS, 14 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 15 * IMPLIED. 16 */ 17 .text 18 .globl setjmp 19#ifndef __MINGW32__ 20 .type setjmp, @function 21#else 22 .def setjmp; .scl 2; .type 32; .endef 23#endif 24setjmp: 25 pop %ecx 26 movl (%esp), %edx 27 movl %ebx, (%edx) 28 movl %esi, 4(%edx) 29 movl %edi, 8(%edx) 30 movl %ebp, 12(%edx) 31 movl %esp, 16(%edx) 32 xorl %eax, %eax 33 jmp *%ecx 34 35 .globl longjmp 36#ifndef __MINGW32__ 37 .type longjmp, @function 38#else 39 .def longjmp; .scl 2; .type 32; .endef 40#endif 41longjmp: 42 pop %eax 43 pop %edx 44 pop %eax 45 movl (%edx), %ebx 46 movl 4(%edx), %esi 47 movl 8(%edx), %edi 48