Software APIs
ibex.c
1// Copyright lowRISC contributors (OpenTitan project).
2// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3// SPDX-License-Identifier: Apache-2.0
4
6
8
9uint32_t ibex_mcause_read(void) {
10 uint32_t mtval;
11 CSR_READ(CSR_REG_MCAUSE, &mtval);
12 return mtval;
13}
14
15uint32_t ibex_mtval_read(void) {
16 uint32_t mtval;
17 CSR_READ(CSR_REG_MTVAL, &mtval);
18 return mtval;
19}
20
21uint32_t ibex_mepc_read(void) {
22 uint32_t mepc;
23 CSR_READ(CSR_REG_MEPC, &mepc);
24 return mepc;
25}
26
27void ibex_mepc_write(uint32_t mepc) { CSR_WRITE(CSR_REG_MEPC, mepc); }
28
29// `extern` declarations to give the inline functions in the
30// corresponding header a link location.
31
32extern uint64_t ibex_mcycle_read(void);
33extern ibex_timeout_t ibex_timeout_init(uint32_t timeout_usec);
34extern bool ibex_timeout_check(const ibex_timeout_t *timeout);
35extern uint64_t ibex_timeout_elapsed(const ibex_timeout_t *timeout);