SEMA The Semaphore peripheral allows multiple cores in a system to cooperate when accessing shred resources. The peripheral contains eight semaphores that can be atomically set and cleared. It is left to the discretion of the software architect to decide how and when the semaphores are used and how they are allocated. Existing hardware does not have to be modified for this type of cooperative sharing, and the use of semaphores is exclusively within the software domain. 0x4003E000 0x00 0x1000 registers 8 4 SEMAPHORES[%s] Read to test and set, returns prior value. Write 0 to clear semaphore. 0x00 32 sema 0 1 irq0 Semaphore IRQ0 register. 0x40 32 en 0 1 cm4_irq 16 1 mail0 Semaphore Mailbox 0 register. 0x44 32 data 0 32 irq1 Semaphore IRQ1 register. 0x48 32 en 0 1 rv32_irq 16 1 mail1 Semaphore Mailbox 1 register. 0x4C 32 data 0 32 status Semaphore status bits. 0 indicates the semaphore is free, 1 indicates taken. 0x100 32 status0 0 1 status1 1 1 status2 2 1 status3 3 1 status4 4 1 status5 5 1 status6 6 1 status7 7 1