mbv: clang-format
This commit is contained in:
@@ -8,5 +8,4 @@ uint8_t BiosUartRead();
|
||||
void BiosUartWrite(uint8_t);
|
||||
void BiosWozmon();
|
||||
void BiosUartWriteNibble(uint8_t);
|
||||
|
||||
}
|
||||
|
@@ -7,20 +7,17 @@ void BiosUartWrite(uint8_t);
|
||||
void BiosWozmon();
|
||||
void BiosUartWriteNibble(uint8_t n);
|
||||
|
||||
__attribute__((used))
|
||||
void UartWriteU32(uint32_t a) {
|
||||
__attribute__((used)) void UartWriteU32(uint32_t a) {
|
||||
for (int i = 0; i < 8; i++) {
|
||||
BiosUartWriteNibble(a >> 28);
|
||||
a <<= 4;
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((used))
|
||||
void UartWriteString(const char* s) {
|
||||
__attribute__((used)) void UartWriteString(const char* s) {
|
||||
while (*s) {
|
||||
BiosUartWrite(*s);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -39,13 +39,9 @@ bool SetIrqEnabled(uint8_t irqn, bool enabled) {
|
||||
return was_enabled;
|
||||
}
|
||||
|
||||
void SetIsr(uint8_t irqn, Isr isr) {
|
||||
isrs[irqn] = isr;
|
||||
}
|
||||
void SetIsr(uint8_t irqn, Isr isr) { isrs[irqn] = isr; }
|
||||
|
||||
void EnableInterrupts() {
|
||||
intc->MER = 0x3;
|
||||
}
|
||||
void EnableInterrupts() { intc->MER = 0x3; }
|
||||
|
||||
void InterruptHandler() {
|
||||
uint32_t ipr = intc->IPR;
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
namespace intc {
|
||||
|
||||
using Isr = void(*)(void);
|
||||
using Isr = void (*)(void);
|
||||
|
||||
/// Returns: true if the IRQ was previously enabled
|
||||
bool SetIrqEnabled(uint8_t irqn, bool enabled);
|
||||
|
@@ -1,7 +1,8 @@
|
||||
#include "interrupts.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "bios.h"
|
||||
#include "interrupts.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -12,8 +13,7 @@ constexpr uint32_t kInterruptCauseMask = 0xff;
|
||||
|
||||
Isr external_handler = nullptr;
|
||||
|
||||
__attribute__((interrupt))
|
||||
void TrapHandler() {
|
||||
__attribute__((interrupt)) void TrapHandler() {
|
||||
uint32_t mcause;
|
||||
uint32_t mip;
|
||||
asm volatile("csrr %0, mcause" : "=r"(mcause));
|
||||
@@ -26,7 +26,7 @@ void TrapHandler() {
|
||||
}
|
||||
|
||||
mip &= ~(kMieExternalInterruptMask);
|
||||
asm volatile("csrw mip, %0" :: "r"(mip));
|
||||
asm volatile("csrw mip, %0" ::"r"(mip));
|
||||
} else {
|
||||
BiosWozmon();
|
||||
}
|
||||
@@ -34,18 +34,16 @@ void TrapHandler() {
|
||||
|
||||
} // namespace
|
||||
|
||||
void SetExternalInterruptHandler(Isr handler) {
|
||||
external_handler = handler;
|
||||
}
|
||||
void SetExternalInterruptHandler(Isr handler) { external_handler = handler; }
|
||||
|
||||
void EnableExternalInterrupts() {
|
||||
uint32_t mie;
|
||||
Isr trap = TrapHandler;
|
||||
|
||||
asm volatile("csrr %0, mie" : "=r"(mie));
|
||||
asm volatile("csrw mtvec, %0" :: "r"(trap));
|
||||
asm volatile("csrw mtvec, %0" ::"r"(trap));
|
||||
mie |= kMieExternalInterruptMask;
|
||||
asm volatile("csrw mie, %0" :: "r"(mie));
|
||||
asm volatile("csrw mie, %0" ::"r"(mie));
|
||||
}
|
||||
|
||||
bool EnableInterrupts(bool on) {
|
||||
@@ -61,6 +59,6 @@ bool EnableInterrupts(bool on) {
|
||||
mstatus &= ~kMstatusMieMask;
|
||||
}
|
||||
|
||||
asm volatile("csrw mstatus, %0" :: "r"(mstatus));
|
||||
asm volatile("csrw mstatus, %0" ::"r"(mstatus));
|
||||
return was_on;
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
using Isr = void(*)();
|
||||
using Isr = void (*)();
|
||||
|
||||
void SetExternalInterruptHandler(Isr handler);
|
||||
void EnableExternalInterrupts();
|
||||
|
@@ -3,14 +3,13 @@
|
||||
extern "C" uint32_t _bss_begin, _bss_end, _initial_stack_pointer;
|
||||
extern "C" int main();
|
||||
|
||||
__attribute__((section(".start"), used, naked))
|
||||
void _start() {
|
||||
__attribute__((section(".start"), used, naked)) void _start() {
|
||||
// clear .bss
|
||||
for (uint32_t* ptr = &_bss_begin; ptr < &_bss_end; ptr++) {
|
||||
*ptr = 0;
|
||||
}
|
||||
|
||||
asm volatile ( "la sp, _initial_stack_pointer" );
|
||||
asm volatile("la sp, _initial_stack_pointer");
|
||||
|
||||
main();
|
||||
|
||||
|
@@ -59,9 +59,7 @@ struct Timer {
|
||||
TCSR0.ENT0 = 1;
|
||||
}
|
||||
|
||||
void ClearInterrupt() {
|
||||
TCSR0.T0INT = 0;
|
||||
}
|
||||
void ClearInterrupt() { TCSR0.T0INT = 0; }
|
||||
|
||||
static Timer* Instance(uint32_t base) {
|
||||
return reinterpret_cast<Timer*>(base);
|
||||
|
Reference in New Issue
Block a user