The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/osfmk/ppc/testjump.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /*
   26  * @OSF_FREE_COPYRIGHT@
   27  */
   28 
   29 #define VERBOSE 0
   30 
   31 #include <ppc/setjmp.h>
   32 
   33 int recursed(jmp_buf_t *bufp, int retval, int depth)
   34 {
   35   int mumbojumbo[16];
   36   int i;
   37  
   38 #if VERBOSE
   39   for (i=0;i<depth;i++)
   40     printf(" ");
   41   printf("in recursed(0x%x,%d,%d)\n",bufp,retval,depth);
   42 #endif
   43   if (depth == 0) {
   44 #if VERBOSE
   45     printf("LONGJUMPING from depth %d to buffer at 0x%x!\n",retval, bufp);
   46 #endif
   47     _longjmp(bufp, retval);
   48     printf("SHOULDN'T GET HERE\n");
   49   } else {
   50     recursed(bufp,retval,depth-1);
   51   }
   52   return mumbojumbo[15]=-1; /* make sure we generate our own frame */
   53 }
   54 
   55 int testjump()
   56 {
   57   jmp_buf_t  buf;
   58   int val;
   59   int i;
   60 
   61   printf("calling setjmp\n");
   62 
   63   val = _setjmp(&buf);
   64 #if VERBOSE
   65   for (i=0; i<64; i++) {
   66     if ((i % 8) == 0) printf("\n%2d :",i);
   67     printf(" %8x",buf.jmp_buf[i]);
   68   }
   69 #endif
   70   printf("\nsetjmp returned %d, structure at 0x%x\n",val,&buf);
   71 
   72   if (val < 5)
   73     recursed(&buf,val+1,val+1);
   74 
   75   printf("returning from setjmp/longjmp test\n");
   76 }
   77 

Cache object: 4aa51d5a596a9e998b47a0ce013b3350


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.