1<?xml version="1.0" encoding="utf-8" standalone="no"?>
2<device xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.1" xs:noNamespaceSchemaLocation="svd_schema.xsd">
3  <peripheral>
4    <name>SEMA</name>
5    <description>The Semaphore peripheral allows multiple cores in a system to cooperate when accessing shred resources.
6                                     The peripheral contains eight semaphores that can be atomically set and cleared. It is left to the discretion of the software
7                                     architect to decide how and when the semaphores are used and how they are allocated. Existing hardware does not have to be
8
9                                     modified for this type of cooperative sharing, and the use of semaphores is exclusively within the software domain.</description>
10    <baseAddress>0x4003E000</baseAddress>
11    <addressBlock>
12      <offset>0x00</offset>
13      <size>0x1000</size>
14      <usage>registers</usage>
15    </addressBlock>
16    <registers>
17      <register>
18        <dim>8</dim>
19        <dimIncrement>4</dimIncrement>
20        <name>SEMAPHORES[%s]</name>
21        <description>Read to test and set, returns prior value. Write 0 to clear semaphore.</description>
22        <addressOffset>0x00</addressOffset>
23        <size>32</size>
24        <fields>
25          <field>
26            <name>sema</name>
27            <bitOffset>0</bitOffset>
28            <bitWidth>1</bitWidth>
29          </field>
30        </fields>
31      </register>
32      <register>
33        <name>irq0</name>
34        <description>Semaphore IRQ0 register.</description>
35        <addressOffset>0x40</addressOffset>
36        <size>32</size>
37        <fields>
38          <field>
39            <name>en</name>
40            <bitOffset>0</bitOffset>
41            <bitWidth>1</bitWidth>
42          </field>
43          <field>
44            <name>cm4_irq</name>
45            <bitOffset>16</bitOffset>
46            <bitWidth>1</bitWidth>
47          </field>
48        </fields>
49      </register>
50      <register>
51        <name>mail0</name>
52        <description>Semaphore Mailbox 0 register.</description>
53        <addressOffset>0x44</addressOffset>
54        <size>32</size>
55        <fields>
56          <field>
57            <name>data</name>
58            <bitOffset>0</bitOffset>
59            <bitWidth>32</bitWidth>
60          </field>
61        </fields>
62      </register>
63      <register>
64        <name>irq1</name>
65        <description>Semaphore IRQ1 register.</description>
66        <addressOffset>0x48</addressOffset>
67        <size>32</size>
68        <fields>
69          <field>
70            <name>en</name>
71            <bitOffset>0</bitOffset>
72            <bitWidth>1</bitWidth>
73          </field>
74          <field>
75            <name>rv32_irq</name>
76            <bitOffset>16</bitOffset>
77            <bitWidth>1</bitWidth>
78          </field>
79        </fields>
80      </register>
81      <register>
82        <name>mail1</name>
83        <description>Semaphore Mailbox 1 register.</description>
84        <addressOffset>0x4C</addressOffset>
85        <size>32</size>
86        <fields>
87          <field>
88            <name>data</name>
89            <bitOffset>0</bitOffset>
90            <bitWidth>32</bitWidth>
91          </field>
92        </fields>
93      </register>
94      <register>
95        <name>status</name>
96        <description>Semaphore status bits. 0 indicates the semaphore is free, 1 indicates taken.</description>
97        <addressOffset>0x100</addressOffset>
98        <size>32</size>
99        <fields>
100          <field>
101            <name>status0</name>
102            <bitOffset>0</bitOffset>
103            <bitWidth>1</bitWidth>
104          </field>
105          <field>
106            <name>status1</name>
107            <bitOffset>1</bitOffset>
108            <bitWidth>1</bitWidth>
109          </field>
110          <field>
111            <name>status2</name>
112            <bitOffset>2</bitOffset>
113            <bitWidth>1</bitWidth>
114          </field>
115          <field>
116            <name>status3</name>
117            <bitOffset>3</bitOffset>
118            <bitWidth>1</bitWidth>
119          </field>
120          <field>
121            <name>status4</name>
122            <bitOffset>4</bitOffset>
123            <bitWidth>1</bitWidth>
124          </field>
125          <field>
126            <name>status5</name>
127            <bitOffset>5</bitOffset>
128            <bitWidth>1</bitWidth>
129          </field>
130          <field>
131            <name>status6</name>
132            <bitOffset>6</bitOffset>
133            <bitWidth>1</bitWidth>
134          </field>
135          <field>
136            <name>status7</name>
137            <bitOffset>7</bitOffset>
138            <bitWidth>1</bitWidth>
139          </field>
140        </fields>
141      </register>
142    </registers>
143  </peripheral>
144  <!-- SEMA:
145                                         Semaphore                            -->
146</device>