^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) struct sigscratch {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) unsigned long scratch_unat; /* ar.unat for the general registers saved in pt */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) unsigned long ar_pfs; /* for syscalls, the user-level function-state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) struct pt_regs pt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) struct sigframe {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Place signal handler args where user-level unwinder can find them easily.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * DO NOT MOVE THESE. They are part of the IA-64 Linux ABI and there is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * user-level code that depends on their presence!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) unsigned long arg0; /* signum */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) unsigned long arg1; /* siginfo pointer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) unsigned long arg2; /* sigcontext pointer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * End of architected state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) void __user *handler; /* pointer to the plabel of the signal handler */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct siginfo info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) struct sigcontext sc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) extern void ia64_do_signal (struct sigscratch *, long);