15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SANDBOX_LINUX_SERVICES_ANDROID_MIPS_UCONTEXT_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SANDBOX_LINUX_SERVICES_ANDROID_MIPS_UCONTEXT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is mostly copied from breakpad (common/android/include/sys/ucontext.h), 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// except we do use sigset_t for uc_sigmask instead of a custom type. 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(__BIONIC_HAVE_UCONTEXT_T) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ensure that 'stack_t' is defined. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <asm/signal.h> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// We also need greg_t for the sandbox, include it in this header as well. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned long greg_t; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t regmask; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t status; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t pc; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t gregs[32]; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t fpregs[32]; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t acx; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t fpc_csr; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t fpc_eir; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t used_math; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t dsp; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t mdhi; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint64_t mdlo; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t hi1; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t lo1; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t hi2; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t lo2; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t hi3; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t lo3; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} mcontext_t; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct ucontext { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t uc_flags; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct ucontext* uc_link; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stack_t uc_stack; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mcontext_t uc_mcontext; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sigset_t uc_sigmask; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Other fields are not used by Google Breakpad. Don't define them. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} ucontext_t; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/ucontext.h> 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // __BIONIC_HAVE_UCONTEXT_T 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // SANDBOX_LINUX_SERVICES_ANDROID_MIPS_UCONTEXT_H_ 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)