Snitch Runtime
Loading...
Searching...
No Matches
cluster_interrupts.h
1// Copyright 2023 ETH Zurich and University of Bologna.
2// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3// SPDX-License-Identifier: Apache-2.0
4
5#pragma once
6
7#include "../../deps/riscv-opcodes/encoding.h"
8
14inline void snrt_int_cluster_set(uint32_t mask, uint32_t cluster_idx) {
15 snrt_cluster(cluster_idx)->peripheral_reg.cl_clint_set.f.cl_clint_set =
16 mask;
17}
18
23inline void snrt_int_cluster_set(uint32_t mask) {
24 snrt_int_cluster_set(mask, snrt_cluster_idx());
25}
26
31inline void snrt_int_cluster_clr(uint32_t mask) {
32 snrt_cluster()->peripheral_reg.cl_clint_clear.f.cl_clint_clear = mask;
33}
34
42inline void snrt_int_clr_mcip_unsafe() {
43 snrt_int_cluster_clr(1 << snrt_cluster_core_idx());
44}
45
49inline void snrt_int_clr_mcip() {
50 snrt_int_clr_mcip_unsafe();
51 snrt_fence();
52}
53
54inline void snrt_int_set_mcip() {
55 snrt_int_cluster_set(1 << snrt_cluster_core_idx());
56}