stkarm/src/kernel.cpp

34 lines
769 B
C++
Raw Normal View History

2018-12-28 09:27:49 +00:00
#define UART_RBR 0x01c28000
char* const UART_THR = (char* const)0x01c28000;
#define UART_IER 0x01c28004
char* const UART_LSR = (char* const)0x01c28014;
extern "C" int printk(const char*);
extern "C" int main(int argc, char** argv) {
char letter[2] = "A";
for (char c = 'A'; c < 'Z'; c++) {
letter[0] = c;
printk("HELLO WORLD!");
printk("\t");
printk(letter);
printk("\r\n");
}
return 0;
2018-12-28 08:20:09 +00:00
}
2018-12-28 09:27:49 +00:00
/* Never call this function directly: always use the printk,
* which disables and reenables interrupts */
extern "C" int c_printk(const char* msg) {
while (*msg != '\0') {
while ((*UART_LSR & 0x20) == 0); /* Wait for transmission */
*UART_THR = *msg;
msg++;
}
return 0;
}