signal.c (ba49d760eb04630e7b15f423ebecf6c871b8f77b) | signal.c (3c13b0ffe76057e93e007bedbad3cc556146e3ed) |
---|---|
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 --- 87 unchanged lines hidden (view full) --- 96 __get_user(env->gr[i], &sc->sc_gr[i]); 97 } 98 for (i = 0; i < 32; ++i) { 99 __get_user(env->fr[i], &sc->sc_fr[i]); 100 } 101 cpu_hppa_loaded_fr0(env); 102 103 __get_user(env->iaoq_f, &sc->sc_iaoq[0]); | 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 --- 87 unchanged lines hidden (view full) --- 96 __get_user(env->gr[i], &sc->sc_gr[i]); 97 } 98 for (i = 0; i < 32; ++i) { 99 __get_user(env->fr[i], &sc->sc_fr[i]); 100 } 101 cpu_hppa_loaded_fr0(env); 102 103 __get_user(env->iaoq_f, &sc->sc_iaoq[0]); |
104 env->iaoq_f |= PRIV_USER; |
|
104 __get_user(env->iaoq_b, &sc->sc_iaoq[1]); | 105 __get_user(env->iaoq_b, &sc->sc_iaoq[1]); |
106 env->iaoq_b |= PRIV_USER; |
|
105 __get_user(env->cr[CR_SAR], &sc->sc_sar); 106} 107 108void setup_rt_frame(int sig, struct target_sigaction *ka, 109 target_siginfo_t *info, 110 target_sigset_t *set, CPUArchState *env) 111{ 112 abi_ulong frame_addr, sp, haddr; --- 44 unchanged lines hidden (view full) --- 157 if (!fdesc) { 158 goto give_sigsegv; 159 } 160 __get_user(dest, fdesc); 161 __get_user(env->gr[19], fdesc + 1); 162 unlock_user(fdesc, haddr, 0); 163 haddr = dest; 164 } | 107 __get_user(env->cr[CR_SAR], &sc->sc_sar); 108} 109 110void setup_rt_frame(int sig, struct target_sigaction *ka, 111 target_siginfo_t *info, 112 target_sigset_t *set, CPUArchState *env) 113{ 114 abi_ulong frame_addr, sp, haddr; --- 44 unchanged lines hidden (view full) --- 159 if (!fdesc) { 160 goto give_sigsegv; 161 } 162 __get_user(dest, fdesc); 163 __get_user(env->gr[19], fdesc + 1); 164 unlock_user(fdesc, haddr, 0); 165 haddr = dest; 166 } |
165 env->iaoq_f = haddr; 166 env->iaoq_b = haddr + 4; | 167 env->iaoq_f = haddr | PRIV_USER; 168 env->iaoq_b = env->iaoq_f + 4; |
167 env->psw_n = 0; 168 return; 169 170 give_sigsegv: 171 force_sigsegv(sig); 172} 173 174long do_rt_sigreturn(CPUArchState *env) --- 42 unchanged lines hidden --- | 169 env->psw_n = 0; 170 return; 171 172 give_sigsegv: 173 force_sigsegv(sig); 174} 175 176long do_rt_sigreturn(CPUArchState *env) --- 42 unchanged lines hidden --- |