/*
 * Copyright (c) 2021 Antony Pavlov <antonynpavlov@gmail.com>
 *
 * based on include/arch/riscv/exp.h
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_ARCH_MIPS_EXP_H_
#define ZEPHYR_INCLUDE_ARCH_MIPS_EXP_H_

#ifndef _ASMLANGUAGE
#include <zephyr/types.h>
#include <zephyr/toolchain.h>

#ifdef __cplusplus
extern "C" {
#endif

struct __esf {
	unsigned long ra;		/* return address */
	unsigned long gp;		/* global pointer */

	unsigned long t0;		/* Caller-saved temporary register */
	unsigned long t1;		/* Caller-saved temporary register */
	unsigned long t2;		/* Caller-saved temporary register */
	unsigned long t3;		/* Caller-saved temporary register */
	unsigned long t4;		/* Caller-saved temporary register */
	unsigned long t5;		/* Caller-saved temporary register */
	unsigned long t6;		/* Caller-saved temporary register */
	unsigned long t7;		/* Caller-saved temporary register */
	unsigned long t8;		/* Caller-saved temporary register */
	unsigned long t9;		/* Caller-saved temporary register */

	unsigned long a0;		/* function argument */
	unsigned long a1;		/* function argument */
	unsigned long a2;		/* function argument */
	unsigned long a3;		/* function argument */

	unsigned long v0;		/* return value */
	unsigned long v1;		/* return value */

	unsigned long at;		/* assembly temporary */

	unsigned long epc;
	unsigned long badvaddr;
	unsigned long hi;
	unsigned long lo;
	unsigned long status;
	unsigned long cause;
};

typedef struct __esf z_arch_esf_t;

#ifdef __cplusplus
}
#endif

#endif /* _ASMLANGUAGE */

#endif /* ZEPHYR_INCLUDE_ARCH_MIPS_EXP_H_ */
