Software APIs
otbn_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for otbn
4 */
5
6// Copyright information found in source file:
7// Copyright lowRISC contributors (OpenTitan project).
8
9// Licensing information found in source file:
10// Licensed under the Apache License, Version 2.0, see LICENSE for details.
11// SPDX-License-Identifier: Apache-2.0
12
13#ifndef _OTBN_REG_DEFS_
14#define _OTBN_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of alerts
20#define OTBN_PARAM_NUM_ALERTS 2
21
22// Register width
23#define OTBN_PARAM_REG_WIDTH 32
24
25// Common Interrupt Offsets
26#define OTBN_INTR_COMMON_DONE_BIT 0
27
28// Interrupt State Register
29#define OTBN_INTR_STATE_REG_OFFSET 0x0
30#define OTBN_INTR_STATE_REG_RESVAL 0x0u
31#define OTBN_INTR_STATE_DONE_BIT 0
32
33// Interrupt Enable Register
34#define OTBN_INTR_ENABLE_REG_OFFSET 0x4
35#define OTBN_INTR_ENABLE_REG_RESVAL 0x0u
36#define OTBN_INTR_ENABLE_DONE_BIT 0
37
38// Interrupt Test Register
39#define OTBN_INTR_TEST_REG_OFFSET 0x8
40#define OTBN_INTR_TEST_REG_RESVAL 0x0u
41#define OTBN_INTR_TEST_DONE_BIT 0
42
43// Alert Test Register
44#define OTBN_ALERT_TEST_REG_OFFSET 0xc
45#define OTBN_ALERT_TEST_REG_RESVAL 0x80000000u
46#define OTBN_ALERT_TEST_FATAL_BIT 0
47#define OTBN_ALERT_TEST_RECOV_BIT 1
48#define OTBN_ALERT_TEST_REGWEN_BIT 31
49
50// Command Register
51#define OTBN_CMD_REG_OFFSET 0x10
52#define OTBN_CMD_REG_RESVAL 0x0u
53#define OTBN_CMD_CMD_MASK 0xffu
54#define OTBN_CMD_CMD_OFFSET 0
55#define OTBN_CMD_CMD_FIELD \
56 ((bitfield_field32_t) { .mask = OTBN_CMD_CMD_MASK, .index = OTBN_CMD_CMD_OFFSET })
57
58// Control Register
59#define OTBN_CTRL_REG_OFFSET 0x14
60#define OTBN_CTRL_REG_RESVAL 0x0u
61#define OTBN_CTRL_SOFTWARE_ERRS_FATAL_BIT 0
62#define OTBN_CTRL_WFI_ENABLED_BIT 1
63#define OTBN_CTRL_URND_CTRL_ENABLED_BIT 2
64
65// Status Register
66#define OTBN_STATUS_REG_OFFSET 0x18
67#define OTBN_STATUS_REG_RESVAL 0x4u
68#define OTBN_STATUS_STATUS_MASK 0xffu
69#define OTBN_STATUS_STATUS_OFFSET 0
70#define OTBN_STATUS_STATUS_FIELD \
71 ((bitfield_field32_t) { .mask = OTBN_STATUS_STATUS_MASK, .index = OTBN_STATUS_STATUS_OFFSET })
72
73// Operation Result Register
74#define OTBN_ERR_BITS_REG_OFFSET 0x1c
75#define OTBN_ERR_BITS_REG_RESVAL 0x0u
76#define OTBN_ERR_BITS_BAD_DATA_ADDR_BIT 0
77#define OTBN_ERR_BITS_BAD_INSN_ADDR_BIT 1
78#define OTBN_ERR_BITS_CALL_STACK_BIT 2
79#define OTBN_ERR_BITS_ILLEGAL_INSN_BIT 3
80#define OTBN_ERR_BITS_LOOP_BIT 4
81#define OTBN_ERR_BITS_KEY_INVALID_BIT 5
82#define OTBN_ERR_BITS_RND_REP_CHK_FAIL_BIT 6
83#define OTBN_ERR_BITS_RND_FIPS_CHK_FAIL_BIT 7
84#define OTBN_ERR_BITS_MAI_SOFTWARE_ERROR_BIT 8
85#define OTBN_ERR_BITS_IMEM_INTG_VIOLATION_BIT 16
86#define OTBN_ERR_BITS_DMEM_INTG_VIOLATION_BIT 17
87#define OTBN_ERR_BITS_REG_INTG_VIOLATION_BIT 18
88#define OTBN_ERR_BITS_BUS_INTG_VIOLATION_BIT 19
89#define OTBN_ERR_BITS_BAD_INTERNAL_STATE_BIT 20
90#define OTBN_ERR_BITS_ILLEGAL_BUS_ACCESS_BIT 21
91#define OTBN_ERR_BITS_LIFECYCLE_ESCALATION_BIT 22
92#define OTBN_ERR_BITS_FATAL_SOFTWARE_BIT 23
93
94// Fatal Alert Cause Register
95#define OTBN_FATAL_ALERT_CAUSE_REG_OFFSET 0x20
96#define OTBN_FATAL_ALERT_CAUSE_REG_RESVAL 0x0u
97#define OTBN_FATAL_ALERT_CAUSE_IMEM_INTG_VIOLATION_BIT 0
98#define OTBN_FATAL_ALERT_CAUSE_DMEM_INTG_VIOLATION_BIT 1
99#define OTBN_FATAL_ALERT_CAUSE_REG_INTG_VIOLATION_BIT 2
100#define OTBN_FATAL_ALERT_CAUSE_BUS_INTG_VIOLATION_BIT 3
101#define OTBN_FATAL_ALERT_CAUSE_BAD_INTERNAL_STATE_BIT 4
102#define OTBN_FATAL_ALERT_CAUSE_ILLEGAL_BUS_ACCESS_BIT 5
103#define OTBN_FATAL_ALERT_CAUSE_LIFECYCLE_ESCALATION_BIT 6
104#define OTBN_FATAL_ALERT_CAUSE_FATAL_SOFTWARE_BIT 7
105
106// Instruction Count Register
107#define OTBN_INSN_CNT_REG_OFFSET 0x24
108#define OTBN_INSN_CNT_REG_RESVAL 0x0u
109
110// A 32-bit CRC checksum of data written to memory
111#define OTBN_LOAD_CHECKSUM_REG_OFFSET 0x28
112#define OTBN_LOAD_CHECKSUM_REG_RESVAL 0x0u
113
114// General-purpose 128-bit scratch storage for software use. (common
115// parameters)
116#define OTBN_SCRATCH_SCRATCH_FIELD_WIDTH 32
117#define OTBN_SCRATCH_MULTIREG_COUNT 4
118
119// General-purpose 128-bit scratch storage for software use.
120#define OTBN_SCRATCH_0_REG_OFFSET 0x2000
121#define OTBN_SCRATCH_0_REG_RESVAL 0x0u
122
123// General-purpose 128-bit scratch storage for software use.
124#define OTBN_SCRATCH_1_REG_OFFSET 0x2004
125#define OTBN_SCRATCH_1_REG_RESVAL 0x0u
126
127// General-purpose 128-bit scratch storage for software use.
128#define OTBN_SCRATCH_2_REG_OFFSET 0x2008
129#define OTBN_SCRATCH_2_REG_RESVAL 0x0u
130
131// General-purpose 128-bit scratch storage for software use.
132#define OTBN_SCRATCH_3_REG_OFFSET 0x200c
133#define OTBN_SCRATCH_3_REG_RESVAL 0x0u
134
135// Memory area: Instruction Memory Access
136#define OTBN_IMEM_REG_OFFSET 0x4000
137#define OTBN_IMEM_SIZE_WORDS 4096
138#define OTBN_IMEM_SIZE_BYTES 16384
139// Memory area: Data Memory Access
140#define OTBN_DMEM_REG_OFFSET 0x8000
141#define OTBN_DMEM_SIZE_WORDS 4096
142#define OTBN_DMEM_SIZE_BYTES 16384
143#ifdef __cplusplus
144} // extern "C"
145#endif
146#endif // _OTBN_REG_DEFS_
147// End generated register defines for otbn