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.w = (uint64_t)mask;
16}
17
22inline void snrt_int_cluster_set(uint32_t mask) {
23 snrt_int_cluster_set(mask, snrt_cluster_idx());
24}
25
30inline void snrt_int_cluster_clr(uint32_t mask) {
31 snrt_cluster()->peripheral_reg.cl_clint_clear.f.cl_clint_clear = mask;
32}
33
41inline void snrt_int_clr_mcip_unsafe() {
42 snrt_int_cluster_clr(1 << snrt_cluster_core_idx());
43}
44
48inline void snrt_int_clr_mcip() {
49 snrt_int_clr_mcip_unsafe();
50 snrt_fence();
51}
52
53inline void snrt_int_set_mcip() {
54 snrt_int_cluster_set(1 << snrt_cluster_core_idx());
55}