XenevaOS
Loading...
Searching...
No Matches
littleboot.h
Go to the documentation of this file.
1
30#ifndef __LITTLE_BOOT_H__
31#define __LITTLE_BOOT_H__
32
33/*for now, I only have QEMU */
34#define RASPBERRY_PI 1
35
36 typedef unsigned long long uint64_t;
37 typedef unsigned long long uintptr_t;
38 typedef unsigned char uint8_t;
39 typedef unsigned short uint16_t;
40 typedef unsigned int uint32_t;
42
43 #define true 1
44 #define false 0
45 #define bool char
46
47 #define NULL 0
48
49#ifdef QEMU
50#define UART_BASE 0x09000000
51#elif RASPBERRY_PI
52#define MMIO_BASE 0x3F000000
53#define UART_BASE (0x3F000000 + 0x201000)
54#define UART0_DR ((volatile uint32_t*)(UART_BASE + 0x00))
55#define UART0_FR ((volatile uint32_t*)(UART_BASE + 0x18))
56#define UART0_IBRD ((volatile uint32_t*)(UART_BASE + 0x24))
57#define UART0_FBRD ((volatile uint32_t*)(UART_BASE + 0x28))
58#define UART0_LCRH ((volatile uint32_t*)(UART_BASE + 0x2C))
59#define UART0_CR ((volatile uint32_t*)(UART_BASE + 0x30))
60#define UART0_IMSC ((volatile uint32_t*)(UART_BASE + 0x38))
61#define UART0_ICR ((volatile uint32_t*)(UART_BASE + 0x44))
62#endif
63
64#define UARTFR (UART_BASE + 0x18)
65#define UARTDR (UART_BASE + 0x00)
66
67typedef struct {
68 uint32_t magic;
69 uint32_t totalSize;
70 uint32_t off_dt_struct;
71 uint32_t off_dt_strings;
72 uint32_t off_mem_rsvmap;
73 uint32_t version;
74 uint32_t last_comp_version;
75 uint32_t boot_cpuid_phys;
76 uint32_t size_dt_strings;
77 uint32_t size_dt_struct;
79
80#define MAX_MEMORY_REGN 8
81
87
88#define RAW_OFFSET(type, x, offset) (type)((size_t)x + offset)
89
90/*
91 * LBUartPutc -- put a character to UART
92 * @param c -- Character to put
93 */
94extern void LBUartPutc(char c);
95
96
97/*
98 * LBUartPutString -- print a string
99 * to UART
100 * @param s -- String to print
101 */
102extern void LBUartPutString(const char* s);
103
104/*
105 * LBUartPrintHex -- prints hexadecimal value
106 * using serial UART
107 * @param val -- value to print
108 */
109extern void LBUartPrintHex(uint64_t val);
110
111/*
112 * LBUartPrintInt -- prints integer
113 * through UART
114 * @param value -- value to print
115 */
116extern void LBUartPrintInt(uint64_t value);
117
118
119/*
120 * LBExceptionSetup -- install exception handlers
121 */
122extern void LBExceptionSetup();
123
124
125#endif
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
uint64_t size_t
Definition littleboot.h:41
void LBExceptionSetup()
Definition vector.c:88
unsigned short uint16_t
Definition littleboot.h:39
void LBUartPutString(const char *s)
Definition littleboot.c:156
unsigned long long uintptr_t
Definition littleboot.h:37
unsigned int uint32_t
Definition littleboot.h:40
void LBUartPrintHex(uint64_t val)
Definition littleboot.c:172
unsigned long long uint64_t
Definition littleboot.h:36
unsigned char uint8_t
Definition littleboot.h:38
void LBUartPrintInt(uint64_t value)
Definition littleboot.c:189
void LBUartPutc(char c)
Definition littleboot.c:145
Definition dtb.h:38
Definition littleboot.h:82
uint64_t page_count
Definition littleboot.h:85
uint64_t base
Definition littleboot.h:83
uint64_t size
Definition littleboot.h:84