(root)/
strace-6.5/
src/
linux/
i386/
arch_sigreturn.c
       1  /*
       2   * Copyright (c) 2015-2021 The strace developers.
       3   * All rights reserved.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   */
       7  
       8  static void
       9  arch_sigreturn(struct tcb *tcp)
      10  {
      11  	/*
      12  	 * On i386, sigcontext is followed on stack by struct fpstate
      13  	 * and after it an additional u32 extramask which holds
      14  	 * upper half of the mask.
      15  	 */
      16  	struct {
      17  		uint32_t struct_sigcontext_padding1[20];
      18  		uint32_t oldmask;
      19  		uint32_t struct_sigcontext_padding2;
      20  		uint32_t struct_fpstate_padding[156];
      21  		uint32_t extramask;
      22  	} frame;
      23  	kernel_ulong_t sp;
      24  
      25  	if (get_stack_pointer(tcp, &sp) &&
      26  	    !umove_or_printaddr(tcp, sp, &frame)) {
      27  		uint32_t mask[2] = { frame.oldmask, frame.extramask };
      28  		tprintsigmask_addr(mask);
      29  	}
      30  }