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