signal.c (2bf40d0841b942e7ba12953d515e62a436f0af84) | signal.c (c979d901c8016082cd55a5789998c1cdfa26beef) |
---|---|
1/* 2 * Emulation of Linux signals 3 * 4 * Copyright (c) 2003 Fabrice Bellard 5 * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 25 unchanged lines hidden (view full) --- 34 target_ulong r28, r29, r30, r31; 35 target_ulong sa0; 36 target_ulong lc0; 37 target_ulong sa1; 38 target_ulong lc1; 39 target_ulong m0; 40 target_ulong m1; 41 target_ulong usr; | 1/* 2 * Emulation of Linux signals 3 * 4 * Copyright (c) 2003 Fabrice Bellard 5 * Copyright(c) 2019-2021 Qualcomm Innovation Center, Inc. All Rights Reserved. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 25 unchanged lines hidden (view full) --- 34 target_ulong r28, r29, r30, r31; 35 target_ulong sa0; 36 target_ulong lc0; 37 target_ulong sa1; 38 target_ulong lc1; 39 target_ulong m0; 40 target_ulong m1; 41 target_ulong usr; |
42 target_ulong p3_0; | |
43 target_ulong gp; 44 target_ulong ugp; 45 target_ulong pc; 46 target_ulong cause; 47 target_ulong badva; | 42 target_ulong gp; 43 target_ulong ugp; 44 target_ulong pc; 45 target_ulong cause; 46 target_ulong badva; |
48 target_ulong pad1; 49 target_ulong pad2; 50 target_ulong pad3; | 47 target_ulong pred[NUM_PREGS]; |
51}; 52 53struct target_ucontext { 54 unsigned long uc_flags; 55 target_ulong uc_link; /* target pointer */ 56 target_stack_t uc_stack; 57 struct target_sigcontext uc_mcontext; 58 target_sigset_t uc_sigmask; --- 54 unchanged lines hidden (view full) --- 113 __put_user(env->gpr[HEX_REG_R31], &sc->r31); 114 __put_user(env->gpr[HEX_REG_SA0], &sc->sa0); 115 __put_user(env->gpr[HEX_REG_LC0], &sc->lc0); 116 __put_user(env->gpr[HEX_REG_SA1], &sc->sa1); 117 __put_user(env->gpr[HEX_REG_LC1], &sc->lc1); 118 __put_user(env->gpr[HEX_REG_M0], &sc->m0); 119 __put_user(env->gpr[HEX_REG_M1], &sc->m1); 120 __put_user(env->gpr[HEX_REG_USR], &sc->usr); | 48}; 49 50struct target_ucontext { 51 unsigned long uc_flags; 52 target_ulong uc_link; /* target pointer */ 53 target_stack_t uc_stack; 54 struct target_sigcontext uc_mcontext; 55 target_sigset_t uc_sigmask; --- 54 unchanged lines hidden (view full) --- 110 __put_user(env->gpr[HEX_REG_R31], &sc->r31); 111 __put_user(env->gpr[HEX_REG_SA0], &sc->sa0); 112 __put_user(env->gpr[HEX_REG_LC0], &sc->lc0); 113 __put_user(env->gpr[HEX_REG_SA1], &sc->sa1); 114 __put_user(env->gpr[HEX_REG_LC1], &sc->lc1); 115 __put_user(env->gpr[HEX_REG_M0], &sc->m0); 116 __put_user(env->gpr[HEX_REG_M1], &sc->m1); 117 __put_user(env->gpr[HEX_REG_USR], &sc->usr); |
121 __put_user(env->gpr[HEX_REG_P3_0], &sc->p3_0); | |
122 __put_user(env->gpr[HEX_REG_GP], &sc->gp); 123 __put_user(env->gpr[HEX_REG_UGP], &sc->ugp); 124 __put_user(env->gpr[HEX_REG_PC], &sc->pc); | 118 __put_user(env->gpr[HEX_REG_GP], &sc->gp); 119 __put_user(env->gpr[HEX_REG_UGP], &sc->ugp); 120 __put_user(env->gpr[HEX_REG_PC], &sc->pc); |
121 122 int i; 123 for (i = 0; i < NUM_PREGS; i++) { 124 __put_user(env->pred[i], &(sc->pred[i])); 125 } |
|
125} 126 127static void setup_ucontext(struct target_ucontext *uc, 128 CPUHexagonState *env, target_sigset_t *set) 129{ 130 __put_user(0, &(uc->uc_flags)); 131 __put_user(0, &(uc->uc_link)); 132 --- 92 unchanged lines hidden (view full) --- 225 __get_user(env->gpr[HEX_REG_R31], &sc->r31); 226 __get_user(env->gpr[HEX_REG_SA0], &sc->sa0); 227 __get_user(env->gpr[HEX_REG_LC0], &sc->lc0); 228 __get_user(env->gpr[HEX_REG_SA1], &sc->sa1); 229 __get_user(env->gpr[HEX_REG_LC1], &sc->lc1); 230 __get_user(env->gpr[HEX_REG_M0], &sc->m0); 231 __get_user(env->gpr[HEX_REG_M1], &sc->m1); 232 __get_user(env->gpr[HEX_REG_USR], &sc->usr); | 126} 127 128static void setup_ucontext(struct target_ucontext *uc, 129 CPUHexagonState *env, target_sigset_t *set) 130{ 131 __put_user(0, &(uc->uc_flags)); 132 __put_user(0, &(uc->uc_link)); 133 --- 92 unchanged lines hidden (view full) --- 226 __get_user(env->gpr[HEX_REG_R31], &sc->r31); 227 __get_user(env->gpr[HEX_REG_SA0], &sc->sa0); 228 __get_user(env->gpr[HEX_REG_LC0], &sc->lc0); 229 __get_user(env->gpr[HEX_REG_SA1], &sc->sa1); 230 __get_user(env->gpr[HEX_REG_LC1], &sc->lc1); 231 __get_user(env->gpr[HEX_REG_M0], &sc->m0); 232 __get_user(env->gpr[HEX_REG_M1], &sc->m1); 233 __get_user(env->gpr[HEX_REG_USR], &sc->usr); |
233 __get_user(env->gpr[HEX_REG_P3_0], &sc->p3_0); | |
234 __get_user(env->gpr[HEX_REG_GP], &sc->gp); 235 __get_user(env->gpr[HEX_REG_UGP], &sc->ugp); 236 __get_user(env->gpr[HEX_REG_PC], &sc->pc); | 234 __get_user(env->gpr[HEX_REG_GP], &sc->gp); 235 __get_user(env->gpr[HEX_REG_UGP], &sc->ugp); 236 __get_user(env->gpr[HEX_REG_PC], &sc->pc); |
237 238 int i; 239 for (i = 0; i < NUM_PREGS; i++) { 240 __get_user(env->pred[i], &(sc->pred[i])); 241 } |
|
237} 238 239static void restore_ucontext(CPUHexagonState *env, struct target_ucontext *uc) 240{ 241 sigset_t blocked; 242 target_sigset_t target_set; 243 int i; 244 --- 44 unchanged lines hidden --- | 242} 243 244static void restore_ucontext(CPUHexagonState *env, struct target_ucontext *uc) 245{ 246 sigset_t blocked; 247 target_sigset_t target_set; 248 int i; 249 --- 44 unchanged lines hidden --- |