GitOS
Operating system exercise
Loading...
Searching...
No Matches
GitBoot.hpp
Go to the documentation of this file.
1//
2// Created by Pawel Reich on 2/16/25.
3//
5#pragma once
6#include <stdint-gcc.h>
7#include "../Bootloader.hpp"
9class GitBoot : public Bootloader {
11 public:
12 void init(uint32_t magic, void* info_ptr) override;
13 const char* get_cmdline() const override;
14 const char* get_bootloader_name() const override;
15 uint64_t get_heap_base_address() const override;
16 uint64_t get_heap_size() const override;
19 uint64_t m_len;
20
21 private:
22 struct memory_map_entry
23 {
24 uint64_t base_address;
25 uint64_t length_in_bytes;
26 uint32_t type;
27 } __attribute__ ((packed));
28
29 memory_map_entry* bios_memory_map = reinterpret_cast<memory_map_entry*>(0x500);
30
31 struct VbeModeInfo {
32 uint16_t attributes;
33 uint8_t winA, winB;
35 uint32_t realFctPtr;
36 uint16_t pitch; // Bytes per scanline
37 uint16_t xRes, yRes;
40 uint8_t reserved0;
41 uint8_t redMask, redPosition;
42 uint8_t greenMask, greenPosition;
43 uint8_t blueMask, bluePosition;
46 uint32_t framebuffer; // Framebuffer address
47 uint32_t offScreenMemOffset;
48 uint16_t offScreenMemSize;
49 uint8_t reserved1[206];
50 } __attribute__((packed));
51
52 bool m_gitboot = false;
53};
54
uint16_t segmentA
Definition GitBoot.hpp:2
uint64_t length_in_bytes
Definition GitBoot.hpp:1
uint32_t realFctPtr
Definition GitBoot.hpp:3
uint8_t planes
Definition GitBoot.hpp:6
uint8_t directColorAttributes
Definition GitBoot.hpp:13
uint8_t imagePages
Definition GitBoot.hpp:7
uint16_t xRes
Definition GitBoot.hpp:5
uint32_t offScreenMemOffset
Definition GitBoot.hpp:15
uint8_t bankSize
Definition GitBoot.hpp:7
uint8_t reserved0
Definition GitBoot.hpp:8
uint16_t granularity
Definition GitBoot.hpp:2
uint8_t redMask
Definition GitBoot.hpp:9
uint8_t bpp
Definition GitBoot.hpp:6
uint8_t blueMask
Definition GitBoot.hpp:11
uint8_t reservedPosition
Definition GitBoot.hpp:12
uint8_t redPosition
Definition GitBoot.hpp:9
uint8_t yCharSize
Definition GitBoot.hpp:6
uint32_t framebuffer
Definition GitBoot.hpp:14
uint8_t banks
Definition GitBoot.hpp:6
uint16_t winSize
Definition GitBoot.hpp:2
uint16_t attributes
Definition GitBoot.hpp:0
uint64_t base_address
Definition GitBoot.hpp:0
uint16_t offScreenMemSize
Definition GitBoot.hpp:16
uint8_t winA
Definition GitBoot.hpp:1
uint8_t greenMask
Definition GitBoot.hpp:10
uint16_t yRes
Definition GitBoot.hpp:5
uint8_t reserved1[206]
Definition GitBoot.hpp:17
uint8_t winB
Definition GitBoot.hpp:1
uint8_t xCharSize
Definition GitBoot.hpp:6
uint8_t greenPosition
Definition GitBoot.hpp:10
uint32_t type
Definition GitBoot.hpp:2
uint16_t segmentB
Definition GitBoot.hpp:2
uint8_t memoryModel
Definition GitBoot.hpp:7
uint16_t pitch
Definition GitBoot.hpp:4
uint8_t bluePosition
Definition GitBoot.hpp:11
uint8_t reservedMask
Definition GitBoot.hpp:12
uint32_t magic
Definition Multiboot.hpp:0
Definition Bootloader.hpp:11
Definition GitBoot.hpp:9
const char * get_bootloader_name() const override
Definition GitBoot.cpp:57
void init(uint32_t magic, void *info_ptr) override
Definition GitBoot.cpp:10
const char * get_cmdline() const override
Definition GitBoot.cpp:51
uint64_t get_heap_base_address() const override
Definition GitBoot.cpp:63
uint64_t get_heap_size() const override
Definition GitBoot.cpp:67
uint64_t m_len
Definition GitBoot.hpp:19
uint64_t m_base_address
Definition GitBoot.hpp:18
struct fat_directory __attribute__