signal.c (95a29a4e3edb3eabde37587b2bcc9d4874c5306f) signal.c (5de154e82f4e507084f6c12b4ee300221ce078ce)
1/*
2 * Emulation of Linux signals
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 2906 unchanged lines hidden (view full) ---

2915 offsetof(struct target_signal_frame, info);
2916 env->regwptr[UREG_I2] = sf_addr +
2917 offsetof(struct target_signal_frame, info);
2918
2919 /* 4. signal handler */
2920 env->pc = ka->_sa_handler;
2921 env->npc = (env->pc + 4);
2922 /* 5. return to kernel instructions */
1/*
2 * Emulation of Linux signals
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 2906 unchanged lines hidden (view full) ---

2915 offsetof(struct target_signal_frame, info);
2916 env->regwptr[UREG_I2] = sf_addr +
2917 offsetof(struct target_signal_frame, info);
2918
2919 /* 4. signal handler */
2920 env->pc = ka->_sa_handler;
2921 env->npc = (env->pc + 4);
2922 /* 5. return to kernel instructions */
2923 if (ka->sa_restorer) {
2924 env->regwptr[UREG_I7] = ka->sa_restorer;
2923 if (ka->ka_restorer) {
2924 env->regwptr[UREG_I7] = ka->ka_restorer;
2925 } else {
2926 uint32_t val32;
2927
2928 env->regwptr[UREG_I7] = sf_addr +
2929 offsetof(struct target_signal_frame, insns) - 2 * 4;
2930
2931 /* mov __NR_sigreturn, %g1 */
2932 val32 = 0x821020d8;

--- 4526 unchanged lines hidden ---
2925 } else {
2926 uint32_t val32;
2927
2928 env->regwptr[UREG_I7] = sf_addr +
2929 offsetof(struct target_signal_frame, insns) - 2 * 4;
2930
2931 /* mov __NR_sigreturn, %g1 */
2932 val32 = 0x821020d8;

--- 4526 unchanged lines hidden ---