NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
Loading...
Searching...
No Matches
neorv32_sysinfo.h
Go to the documentation of this file.
1// ================================================================================ //
2// The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 //
3// Copyright (c) NEORV32 contributors. //
4// Copyright (c) 2020 - 2025 Stephan Nolting. All rights reserved. //
5// Licensed under the BSD-3-Clause license, see LICENSE for details. //
6// SPDX-License-Identifier: BSD-3-Clause //
7// ================================================================================ //
8
15
16#ifndef neorv32_sysinfo_h
17#define neorv32_sysinfo_h
18
19#include <stdint.h>
20
21/**********************************************************************/
26typedef volatile struct __attribute__((packed,aligned(4))) {
27 uint32_t CLK;
28 const uint8_t MISC[4];
29 const uint32_t SOC;
30 const uint32_t CACHE;
32
34#define NEORV32_SYSINFO ((neorv32_sysinfo_t*) (NEORV32_SYSINFO_BASE))
35
43
79
102
103
104/**********************************************************************/
108inline uint32_t __attribute__ ((always_inline)) neorv32_sysinfo_get_numcores(void) {
109 return (uint32_t)(NEORV32_SYSINFO->MISC[SYSINFO_MISC_HART]);
110}
111
112/**********************************************************************/
116inline uint32_t __attribute__ ((always_inline)) neorv32_sysinfo_get_imemsize(void) {
117 return (uint32_t)(1 << NEORV32_SYSINFO->MISC[SYSINFO_MISC_IMEM]);
118}
119
120/**********************************************************************/
124inline uint32_t __attribute__ ((always_inline)) neorv32_sysinfo_get_dmemsize(void) {
125 return (uint32_t)(1 << NEORV32_SYSINFO->MISC[SYSINFO_MISC_DMEM]);
126}
127
128/**********************************************************************/
132inline uint32_t __attribute__ ((always_inline)) neorv32_sysinfo_get_bootmode(void) {
133 return (uint32_t)(NEORV32_SYSINFO->MISC[SYSINFO_MISC_BOOT]);
134}
135
136/**********************************************************************/
140inline uint32_t __attribute__ ((always_inline)) neorv32_sysinfo_get_clk(void) {
141 return NEORV32_SYSINFO->CLK;
142}
143
144/**********************************************************************/
148inline void __attribute__ ((always_inline)) neorv32_sysinfo_set_clk(uint32_t clock) {
149 NEORV32_SYSINFO->CLK = clock;
150}
151
152#endif // neorv32_sysinfo_h
uint32_t neorv32_sysinfo_get_clk(void)
Definition neorv32_sysinfo.h:140
uint32_t neorv32_sysinfo_get_dmemsize(void)
Definition neorv32_sysinfo.h:124
#define NEORV32_SYSINFO
Definition neorv32_sysinfo.h:34
uint32_t neorv32_sysinfo_get_bootmode(void)
Definition neorv32_sysinfo.h:132
NEORV32_SYSINFO_CACHE_enum
Definition neorv32_sysinfo.h:81
@ SYSINFO_CACHE_INST_NUM_BLOCKS_3
Definition neorv32_sysinfo.h:85
@ SYSINFO_CACHE_INST_BLOCK_SIZE_0
Definition neorv32_sysinfo.h:82
@ SYSINFO_CACHE_XBUS_BLOCK_SIZE_0
Definition neorv32_sysinfo.h:97
@ SYSINFO_CACHE_XIP_BLOCK_SIZE_3
Definition neorv32_sysinfo.h:93
@ SYSINFO_CACHE_DATA_NUM_BLOCKS_3
Definition neorv32_sysinfo.h:90
@ SYSINFO_CACHE_XBUS_NUM_BLOCKS_0
Definition neorv32_sysinfo.h:99
@ SYSINFO_CACHE_DATA_BLOCK_SIZE_0
Definition neorv32_sysinfo.h:87
@ SYSINFO_CACHE_XBUS_BLOCK_SIZE_3
Definition neorv32_sysinfo.h:98
@ SYSINFO_CACHE_XIP_NUM_BLOCKS_0
Definition neorv32_sysinfo.h:94
@ SYSINFO_CACHE_DATA_BLOCK_SIZE_3
Definition neorv32_sysinfo.h:88
@ SYSINFO_CACHE_DATA_NUM_BLOCKS_0
Definition neorv32_sysinfo.h:89
@ SYSINFO_CACHE_INST_NUM_BLOCKS_0
Definition neorv32_sysinfo.h:84
@ SYSINFO_CACHE_XBUS_NUM_BLOCKS_3
Definition neorv32_sysinfo.h:100
@ SYSINFO_CACHE_XIP_BLOCK_SIZE_0
Definition neorv32_sysinfo.h:92
@ SYSINFO_CACHE_INST_BLOCK_SIZE_3
Definition neorv32_sysinfo.h:83
@ SYSINFO_CACHE_XIP_NUM_BLOCKS_3
Definition neorv32_sysinfo.h:95
uint32_t neorv32_sysinfo_get_imemsize(void)
Definition neorv32_sysinfo.h:116
void neorv32_sysinfo_set_clk(uint32_t clock)
Definition neorv32_sysinfo.h:148
NEORV32_SYSINFO_MISC_enum
Definition neorv32_sysinfo.h:37
@ SYSINFO_MISC_HART
Definition neorv32_sysinfo.h:40
@ SYSINFO_MISC_BOOT
Definition neorv32_sysinfo.h:41
@ SYSINFO_MISC_IMEM
Definition neorv32_sysinfo.h:38
@ SYSINFO_MISC_DMEM
Definition neorv32_sysinfo.h:39
NEORV32_SYSINFO_SOC_enum
Definition neorv32_sysinfo.h:45
@ SYSINFO_SOC_ICACHE
Definition neorv32_sysinfo.h:51
@ SYSINFO_SOC_OCD_AUTH
Definition neorv32_sysinfo.h:57
@ SYSINFO_SOC_IO_NEOLED
Definition neorv32_sysinfo.h:72
@ SYSINFO_SOC_IO_TWI
Definition neorv32_sysinfo.h:65
@ SYSINFO_SOC_MEM_INT_IMEM
Definition neorv32_sysinfo.h:48
@ SYSINFO_SOC_IO_UART0
Definition neorv32_sysinfo.h:63
@ SYSINFO_SOC_IO_DMA
Definition neorv32_sysinfo.h:60
@ SYSINFO_SOC_IO_SLINK
Definition neorv32_sysinfo.h:75
@ SYSINFO_SOC_IO_TWD
Definition neorv32_sysinfo.h:59
@ SYSINFO_SOC_OCD
Definition neorv32_sysinfo.h:50
@ SYSINFO_SOC_IO_TRNG
Definition neorv32_sysinfo.h:69
@ SYSINFO_SOC_IO_GPTMR
Definition neorv32_sysinfo.h:74
@ SYSINFO_SOC_IO_SPI
Definition neorv32_sysinfo.h:64
@ SYSINFO_SOC_XIP
Definition neorv32_sysinfo.h:55
@ SYSINFO_SOC_IO_UART1
Definition neorv32_sysinfo.h:71
@ SYSINFO_SOC_XBUS_CACHE
Definition neorv32_sysinfo.h:54
@ SYSINFO_SOC_MEM_INT_DMEM
Definition neorv32_sysinfo.h:49
@ SYSINFO_SOC_IO_GPIO
Definition neorv32_sysinfo.h:61
@ SYSINFO_SOC_BOOTLOADER
Definition neorv32_sysinfo.h:46
@ SYSINFO_SOC_IO_SDI
Definition neorv32_sysinfo.h:70
@ SYSINFO_SOC_IO_PWM
Definition neorv32_sysinfo.h:66
@ SYSINFO_SOC_DCACHE
Definition neorv32_sysinfo.h:52
@ SYSINFO_SOC_IO_ONEWIRE
Definition neorv32_sysinfo.h:76
@ SYSINFO_SOC_IMEM_ROM
Definition neorv32_sysinfo.h:58
@ SYSINFO_SOC_IO_CRC
Definition neorv32_sysinfo.h:77
@ SYSINFO_SOC_XIP_CACHE
Definition neorv32_sysinfo.h:56
@ SYSINFO_SOC_IO_CLINT
Definition neorv32_sysinfo.h:62
@ SYSINFO_SOC_XBUS
Definition neorv32_sysinfo.h:47
@ SYSINFO_SOC_IO_CFS
Definition neorv32_sysinfo.h:68
@ SYSINFO_SOC_IO_WDT
Definition neorv32_sysinfo.h:67
uint32_t neorv32_sysinfo_get_numcores(void)
Definition neorv32_sysinfo.h:108
Definition neorv32_sysinfo.h:26
uint32_t CLK
Definition neorv32_sysinfo.h:27
const uint8_t MISC[4]
Definition neorv32_sysinfo.h:28
const uint32_t SOC
Definition neorv32_sysinfo.h:29
const uint32_t CACHE
Definition neorv32_sysinfo.h:30