+ to occur anywhere other than a signal trampoline. */
+
+static const struct tramp_frame sparc32_linux_sigframe =
+{
+ SIGTRAMP_FRAME,
+ 4,
+ {
+ { 0x821020d8, ULONGEST_MAX }, /* mov __NR_sugreturn, %g1 */
+ { 0x91d02010, ULONGEST_MAX }, /* ta 0x10 */
+ { TRAMP_SENTINEL_INSN, ULONGEST_MAX }
+ },
+ sparc32_linux_sigframe_init
+};
+
+/* The instruction sequence for RT signals is slightly different. The
+ effect is to call the system call rt_sigreturn. */
+
+static const struct tramp_frame sparc32_linux_rt_sigframe =
+{
+ SIGTRAMP_FRAME,
+ 4,
+ {
+ { 0x82102065, ULONGEST_MAX }, /* mov __NR_rt_sigreturn, %g1 */
+ { 0x91d02010, ULONGEST_MAX }, /* ta 0x10 */
+ { TRAMP_SENTINEL_INSN, ULONGEST_MAX }
+ },
+ sparc32_linux_sigframe_init
+};
+
+/* This enum represents the signals' numbers on the SPARC
+ architecture. It just contains the signal definitions which are
+ different from the generic implementation.
+
+ It is derived from the file <arch/sparc/include/uapi/asm/signal.h>,
+ from the Linux kernel tree. */
+
+enum
+ {
+ SPARC_LINUX_SIGEMT = 7,
+ SPARC_LINUX_SIGBUS = 10,
+ SPARC_LINUX_SIGSYS = 12,
+ SPARC_LINUX_SIGURG = 16,
+ SPARC_LINUX_SIGSTOP = 17,
+ SPARC_LINUX_SIGTSTP = 18,
+ SPARC_LINUX_SIGCONT = 19,
+ SPARC_LINUX_SIGCHLD = 20,
+ SPARC_LINUX_SIGIO = 23,
+ SPARC_LINUX_SIGPOLL = SPARC_LINUX_SIGIO,
+ SPARC_LINUX_SIGLOST = 29,
+ SPARC_LINUX_SIGPWR = SPARC_LINUX_SIGLOST,
+ SPARC_LINUX_SIGUSR1 = 30,
+ SPARC_LINUX_SIGUSR2 = 31,
+ };