sigcode32.S 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* $FreeBSD$ */
  2. /* $NetBSD: sigcode.S,v 1.1 1999/11/17 14:56:11 kleink Exp $ */
  3. /*-
  4. * Copyright (C) 1995, 1996 Wolfgang Solfrank.
  5. * Copyright (C) 1995, 1996 TooLs GmbH.
  6. * All rights reserved.
  7. *
  8. * Redistribution and use in source and binary forms, with or without
  9. * modification, are permitted provided that the following conditions
  10. * are met:
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above copyright
  14. * notice, this list of conditions and the following disclaimer in the
  15. * documentation and/or other materials provided with the distribution.
  16. * 3. All advertising materials mentioning features or use of this software
  17. * must display the following acknowledgement:
  18. * This product includes software developed by TooLs GmbH.
  19. * 4. The name of TooLs GmbH may not be used to endorse or promote products
  20. * derived from this software without specific prior written permission.
  21. *
  22. * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
  23. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  24. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  25. * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  26. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  28. * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  29. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  30. * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  31. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. */
  33. #include <machine/asm.h>
  34. #include <sys/syscall.h>
  35. #include "assym.inc"
  36. /*
  37. * The following code gets copied to the top of the user stack on process
  38. * execution. It does signal trampolining on signal delivery.
  39. *
  40. * On entry r1 points to a struct sigframe at bottom of current stack.
  41. * All other registers are unchanged.
  42. */
  43. .globl CNAME(sigcode32),CNAME(szsigcode32)
  44. CNAME(sigcode32):
  45. addi 1,1,-32 /* reserved space for callee */
  46. blrl
  47. addi 3,1,32+SF_UC /* restore sp, and get &frame->sf_uc */
  48. li 0,SYS_sigreturn
  49. sc /* sigreturn(scp) */
  50. li 0,SYS_exit
  51. sc /* exit(errno) */
  52. endsigcode32:
  53. .data
  54. CNAME(szsigcode32):
  55. .long endsigcode32 - CNAME(sigcode32)