161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung/* 261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * Copyright (C) 2017 The Android Open Source Project 361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * All rights reserved. 461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * 561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * Redistribution and use in source and binary forms, with or without 661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * modification, are permitted provided that the following conditions 761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * are met: 861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * * Redistributions of source code must retain the above copyright 961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * notice, this list of conditions and the following disclaimer. 1061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * * Redistributions in binary form must reproduce the above copyright 1161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * notice, this list of conditions and the following disclaimer in 1261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * the documentation and/or other materials provided with the 1361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * distribution. 1461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * 1561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 1861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 1961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 2561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung * SUCH DAMAGE. 2761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung */ 2861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 2961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung#ifndef _LIBUNWINDSTACK_UCONTEXT_MIPS64_H 3061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung#define _LIBUNWINDSTACK_UCONTEXT_MIPS64_H 3161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 3261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung#include <stdint.h> 3361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 3453914165e4a19e4a320cf3394e4fabff4e89d7c6Christopher Ferris#include <unwindstack/MachineMips64.h> 3561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 3661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leungnamespace unwindstack { 3761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 3861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leungstruct mips64_stack_t { 3961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t ss_sp; // void __user* 4061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t ss_size; // size_t 4161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung int32_t ss_flags; // int 4261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung}; 4361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 4461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leungstruct mips64_mcontext_t { 4561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_regs[32]; 4661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_fpregs[32]; 4761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_mdhi; 4861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_hi1; 4961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_hi2; 5061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_hi3; 5161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_mdlo; 5261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_lo1; 5361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_lo2; 5461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_lo3; 5561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t sc_pc; 5661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung // Nothing else is used, so don't define it. 5761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung}; 5861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 5961b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leungstruct mips64_ucontext_t { 6061b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t uc_flags; // unsigned long 6161b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung uint64_t uc_link; // struct ucontext* 6261b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung mips64_stack_t uc_stack; 6361b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung mips64_mcontext_t uc_mcontext; 6461b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung // Nothing else is used, so don't define it. 6561b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung}; 6661b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 6761b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung} // namespace unwindstack 6861b1a1ae7797e0d3177400cdb3cda028ea14669dDouglas Leung 6953914165e4a19e4a320cf3394e4fabff4e89d7c6Christopher Ferris#endif // _LIBUNWINDSTACK_UCONTEXT_MIPS64_H 70