/* * \brief CPU state * \author Sebastian Sumpf * \date 2015-06-01 */ /* * Copyright (C) 2015-2016 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #ifndef _INCLUDE__RISCV__CPU__CPU_STATE_H_ #define _INCLUDE__RISCV__CPU__CPU_STATE_H_ /* Genode includes */ #include namespace Genode { struct Cpu_state; } struct Genode::Cpu_state { enum Cpu_exception { INSTRUCTION_UNALIGNED = 0, INSTRUCTION_PAGE_FAULT = 1, INSTRUCTION_ILLEGAL = 2, BREAKPOINT = 3, LOAD_UNALIGNED = 4, LOAD_PAGE_FAULT = 5, STORE_UNALIGNED = 6, STORE_PAGE_FAULT = 7, ECALL_FROM_USER = 8, ECALL_FROM_SUPERVISOR = 9, ECALL_FROM_HYPERVISOR = 10, ECALL_FROM_MACHINE = 11, RESET = 16, IRQ_FLAG = 1UL << 63, }; addr_t ip, cpu_exception, ra, sp, gp, tp, t0, t1, t2, s0, s1, a0, a1, a2, a3, a4, a5, a6, a7, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, t3, t4, t5, t6; bool is_irq() { return cpu_exception & IRQ_FLAG; } unsigned irq() { return cpu_exception ^ IRQ_FLAG; } }; #endif /* _INCLUDE__RISCV__CPU__CPU_STATE_H_ */