boot: use yboot2-proto instead of yboot2 itself

This commit is contained in:
Mark
2020-09-27 12:31:21 +03:00
parent 6fe45d96bf
commit f263bfb63f
6 changed files with 35 additions and 20 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "boot/yboot2-proto"]
path = boot/yboot2-proto
url = https://git.alnyan.me/yggdrasil/yboot2-proto
+1 -1
View File
@@ -1,6 +1,6 @@
#include <config.h>
// For loader magic
#include <yboot2/include/protocol.h>
#include <yboot2-proto/include/protocol.h>
.section .text
.global _entry_yboot
+18 -9
View File
@@ -2,17 +2,26 @@
char yboot_memory_map_data[32768];
struct yboot_v1 yboot_data __attribute__((section(".data.boot, \"aw\", %progbits //"))) = {
.header = {
.kernel_magic = YB_KERNEL_MAGIC_V1
struct yb_proto_v1 yboot_data __attribute__((section(".data.boot, \"aw\", %progbits //"))) = {
.hdr = {
.kernel_magic = YB_KERNEL_MAGIC_V1A
},
.flags = 0
#if defined(VESA_ENABLE)
.video_width = VESA_WIDTH,
.video_height = VESA_HEIGHT,
.video_format = YB_VIDEO_FORMAT_BGR32,
| YB_FLAG_VIDEO
#endif
| YB_FLAG_INITRD
| YB_FLAG_UPPER,
.memory_map_data = (uint64_t) yboot_memory_map_data - 0xFFFFFF0000000000,
.memory_map_size = sizeof(yboot_memory_map_data)
.memory_map = {
.address = (uint64_t) yboot_memory_map_data - 0xFFFFFF0000000000,
.size = sizeof(yboot_memory_map_data)
},
#if defined(VESA_ENABLE)
.video = {
.width = VESA_WIDTH,
.height = VESA_HEIGHT,
.format = YB_LFB_BGR32,
},
#endif
};
+10 -8
View File
@@ -153,12 +153,12 @@ static void entry_yboot(void) {
kinfo("Provided command line: \"%s\"\n", yboot_data.cmdline);
kernel_set_cmdline(yboot_data.cmdline);
if (yboot_data.video_framebuffer) {
boot_video_info.width = yboot_data.video_width;
boot_video_info.height = yboot_data.video_height;
if ((yboot_data.flags & YB_FLAG_VIDEO) && yboot_data.video.framebuffer) {
boot_video_info.width = yboot_data.video.width;
boot_video_info.height = yboot_data.video.height;
boot_video_info.bpp = 32;
boot_video_info.pitch = yboot_data.video_pitch;
boot_video_info.framebuffer_phys = yboot_data.video_framebuffer;
boot_video_info.pitch = yboot_data.video.pitch;
boot_video_info.framebuffer_phys = yboot_data.video.framebuffer;
}
if (yboot_data.initrd_base) {
@@ -168,9 +168,11 @@ static void entry_yboot(void) {
}
phys_memory_map.format = MM_PHYS_MMAP_FMT_YBOOT;
phys_memory_map.address = (void *) MM_VIRTUALIZE(yboot_data.memory_map_data);
phys_memory_map.entry_size = yboot_data.memory_map_entsize;
phys_memory_map.entry_count = yboot_data.memory_map_size / yboot_data.memory_map_entsize;
phys_memory_map.address = (void *) MM_VIRTUALIZE(yboot_data.memory_map.address);
extern char yboot_memory_map_data[];
_assert((void *) MM_VIRTUALIZE(yboot_data.memory_map.address) == yboot_memory_map_data);
phys_memory_map.entry_size = yboot_data.memory_map.entsize;
phys_memory_map.entry_count = yboot_data.memory_map.size / yboot_data.memory_map.entsize;
}
void kernel_early_init(uint64_t entry_method) {
+1
Submodule boot/yboot2-proto added at f9c0ad12f7
+2 -2
View File
@@ -1,4 +1,4 @@
#pragma once
#include <yboot2/include/protocol.h>
#include <yboot2-proto/include/protocol.h>
extern struct yboot_v1 yboot_data;
extern struct yb_proto_v1 yboot_data;