Loading...
Searching...
No Matches
hazard3.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2022 Raspberry Pi (Trading) Ltd.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef _HARDWARE_HAZARD3_H
8#define _HARDWARE_HAZARD3_H
9
10#include "pico.h"
11#include "hardware/riscv.h"
12
13// This includes both standard and Hazard3 custom CSRs:
14#include "hardware/regs/rvcsr.h"
15
18
25
26#ifndef __ASSEMBLER__
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#ifdef __hazard3_extension_xh3irq
33#define hazard3_irqarray_read(csr, index) (riscv_read_set_csr(csr, (index)) >> 16)
34#else
35#define hazard3_irqarray_read(csr, index) static_assert(false, "Not supported: Xh3irq extension")
36#endif
37
38#ifdef __hazard3_extension_xh3irq
39#define hazard3_irqarray_write(csr, index, data) (riscv_write_csr(csr, (index) | ((uint32_t)(data) << 16)))
40#else
41#define hazard3_irqarray_write(csr, index, data) static_assert(false, "Not supported: Xh3irq extension")
42#endif
43
44#ifdef __hazard3_extension_xh3irq
45#define hazard3_irqarray_set(csr, index, data) (riscv_set_csr(csr, (index) | ((uint32_t)(data) << 16)))
46#else
47#define hazard3_irqarray_set(csr, index, data) static_assert(false, "Not supported: Xh3irq extension")
48#endif
49
50#ifdef __hazard3_extension_xh3irq
51#define hazard3_irqarray_clear(csr, index, data) (riscv_clear_csr(csr, (index) | ((uint32_t)(data) << 16)))
52#else
53#define hazard3_irqarray_clear(csr, index, data) static_assert(false, "Not supported: Xh3irq extension")
54#endif
55
56#ifdef __cplusplus
57}
58#endif
59
60#endif
61
62#endif