L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
__kip-arch.h
1/*
2 * Copyright (C) 2021, 2024 Kernkonzept GmbH.
3 * Author(s): Georg Kotheimer <georg.kotheimer@kernkonzept.com>
4 *
5 * License: see LICENSE.spdx (in this directory or the directories above)
6 */
7#pragma once
8
9struct l4_kip_platform_info_arch
10{
11 l4_uint32_t isa_ext[7];
12 l4_uint32_t timebase_frequency;
13 l4_uint32_t hart_num;
14 l4_uint32_t hart_ids[16];
15 l4_umword_t plic_addr;
16 l4_uint32_t plic_nr_irqs;
17 l4_uint32_t plic_hart_irq_targets[16];
18};
19
20typedef enum L4_riscv_isa_ext
21{
22 // IDs 0-25 are reserved for single-letter RISC-V ISA extensions.
23 L4_riscv_isa_ext_a = ('a' - 'a'), // Atomics
24 L4_riscv_isa_ext_b = ('b' - 'a'), // Bit Manipulation
25 L4_riscv_isa_ext_c = ('c' - 'a'), // Quad-Precision Floating-Point
26 L4_riscv_isa_ext_d = ('d' - 'a'), // Double-Precision Floating-Point
27 L4_riscv_isa_ext_e = ('e' - 'a'), // Reduced Integer
28 L4_riscv_isa_ext_f = ('f' - 'a'), // Single-Precision Floating-Point
29 L4_riscv_isa_ext_g = ('g' - 'a'), // General
30 L4_riscv_isa_ext_h = ('h' - 'a'), // Hypervisor
31 L4_riscv_isa_ext_i = ('i' - 'a'), // Integer
32 L4_riscv_isa_ext_m = ('m' - 'a'), // Integer Multiplication and Division
33 L4_riscv_isa_ext_p = ('p' - 'a'), // Packed-SIMD Extensions
34 L4_riscv_isa_ext_q = ('q' - 'a'), // Quad-Precision Floating-Point
35 L4_riscv_isa_ext_v = ('v' - 'a'), // Vector
36
37 // IDs starting from 26 represent multi-letter extensions. The assignment does
38 // not follow a defined order, IDs are simply assigned incrementally when new
39 // extensions are added.
40 L4_riscv_isa_ext_base = 26,
41
42 L4_riscv_isa_ext_sstc = 27, // stimecmp / vstimecmp
43
44 // Maximum number of extensions that can be represented, corresponds to the
45 // size of the `l4_kip_platform_info_arch.isa_ext` bitmap.
46 L4_riscv_isa_ext_max = 224,
47} L4_riscv_isa_ext;
unsigned long l4_umword_t
Unsigned machine word.
Definition l4int.h:40
unsigned int l4_uint32_t
Unsigned 32bit value.
Definition l4int.h:29