Fix enums

This commit is contained in:
Alex Kotov 2022-01-14 11:20:16 +05:00
parent e363c8dbcf
commit afe3556467
9 changed files with 51 additions and 13 deletions

View File

@ -10,10 +10,10 @@ __attribute__((packed))
multiboot2_header = { multiboot2_header = {
.multiboot2_header = { .multiboot2_header = {
.magic = KERNAUX_MULTIBOOT2_HEADER_MAGIC, .magic = KERNAUX_MULTIBOOT2_HEADER_MAGIC,
.arch = KERNAUX_MULTIBOOT2_ARCH_NONE, .arch = KERNAUX_MULTIBOOT2_HEADER_ARCH_I386,
.total_size = sizeof(multiboot2_header), .total_size = sizeof(multiboot2_header),
.checksum = KERNAUX_MULTIBOOT2_HEADER_CHECKSUM( .checksum = KERNAUX_MULTIBOOT2_HEADER_CHECKSUM(
KERNAUX_MULTIBOOT2_ARCH_NONE, KERNAUX_MULTIBOOT2_HEADER_ARCH_I386,
sizeof(multiboot2_header) sizeof(multiboot2_header)
), ),
}, },

View File

@ -10,10 +10,10 @@ __attribute__((packed))
multiboot2_header = { multiboot2_header = {
.multiboot2_header = { .multiboot2_header = {
.magic = KERNAUX_MULTIBOOT2_HEADER_MAGIC, .magic = KERNAUX_MULTIBOOT2_HEADER_MAGIC,
.arch = KERNAUX_MULTIBOOT2_ARCH_NONE, .arch = KERNAUX_MULTIBOOT2_HEADER_ARCH_I386,
.total_size = sizeof(multiboot2_header), .total_size = sizeof(multiboot2_header),
.checksum = KERNAUX_MULTIBOOT2_HEADER_CHECKSUM( .checksum = KERNAUX_MULTIBOOT2_HEADER_CHECKSUM(
KERNAUX_MULTIBOOT2_ARCH_NONE, KERNAUX_MULTIBOOT2_HEADER_ARCH_I386,
sizeof(multiboot2_header) sizeof(multiboot2_header)
), ),
}, },

View File

@ -43,8 +43,7 @@ extern "C" {
***********************/ ***********************/
enum KernAux_Multiboot2_Header_Arch { enum KernAux_Multiboot2_Header_Arch {
KERNAUX_MULTIBOOT2_HEADER_ARCH_NONE = 0, KERNAUX_MULTIBOOT2_HEADER_ARCH_I386 = 0,
KERNAUX_MULTIBOOT2_HEADER_ARCH_I386 = 1,
KERNAUX_MULTIBOOT2_HEADER_ARCH_MIPS32 = 4, KERNAUX_MULTIBOOT2_HEADER_ARCH_MIPS32 = 4,
}; };
@ -465,6 +464,10 @@ __attribute__((packed));
* String functions * * String functions *
********************/ ********************/
const char *KernAux_Multiboot2_Header_Arch_to_str(
enum KernAux_Multiboot2_Header_Arch arch
);
const char *KernAux_Multiboot2_HTag_to_str( const char *KernAux_Multiboot2_HTag_to_str(
enum KernAux_Multiboot2_HTag tag_type enum KernAux_Multiboot2_HTag tag_type
); );
@ -473,6 +476,10 @@ const char *KernAux_Multiboot2_ITag_to_str(
enum KernAux_Multiboot2_ITag tag_type enum KernAux_Multiboot2_ITag tag_type
); );
const char *KernAux_Multiboot2_HTag_RelocatableHeader_Preference_to_str(
enum KernAux_Multiboot2_HTag_RelocatableHeader_Preference pref
);
/*************************** /***************************
* Header helper functions * * Header helper functions *
***************************/ ***************************/

View File

@ -6,8 +6,21 @@
#include <stddef.h> #include <stddef.h>
const char *KernAux_Multiboot2_Header_Arch_to_str(
const enum KernAux_Multiboot2_Header_Arch arch
) {
switch (arch) {
case KERNAUX_MULTIBOOT2_HEADER_ARCH_I386:
return "i386";
case KERNAUX_MULTIBOOT2_HEADER_ARCH_MIPS32:
return "MIPS32"; // TODO: specify this architecture in README
default:
return NULL;
}
}
const char *KernAux_Multiboot2_HTag_to_str( const char *KernAux_Multiboot2_HTag_to_str(
enum KernAux_Multiboot2_HTag tag_type const enum KernAux_Multiboot2_HTag tag_type
) { ) {
switch (tag_type) { switch (tag_type) {
case KERNAUX_MULTIBOOT2_HTAG_NONE: case KERNAUX_MULTIBOOT2_HTAG_NONE:
@ -38,7 +51,7 @@ const char *KernAux_Multiboot2_HTag_to_str(
} }
const char *KernAux_Multiboot2_ITag_to_str( const char *KernAux_Multiboot2_ITag_to_str(
enum KernAux_Multiboot2_ITag tag_type const enum KernAux_Multiboot2_ITag tag_type
) { ) {
switch (tag_type) { switch (tag_type) {
case KERNAUX_MULTIBOOT2_ITAG_NONE: case KERNAUX_MULTIBOOT2_ITAG_NONE:
@ -89,3 +102,18 @@ const char *KernAux_Multiboot2_ITag_to_str(
return NULL; return NULL;
} }
} }
const char *KernAux_Multiboot2_HTag_RelocatableHeader_Preference_to_str(
const enum KernAux_Multiboot2_HTag_RelocatableHeader_Preference pref
) {
switch (pref) {
case KERNAUX_MULTIBOOT2_HTAG_RELOCATABLE_HEADER_PREFERENCE_NONE:
return "none";
case KERNAUX_MULTIBOOT2_HTAG_RELOCATABLE_HEADER_PREFERENCE_LOWEST:
return "lowest";
case KERNAUX_MULTIBOOT2_HTAG_RELOCATABLE_HEADER_PREFERENCE_HIGHEST:
return "highest";
default:
return NULL;
}
}

View File

@ -15,8 +15,7 @@ bool KernAux_Multiboot2_Header_is_valid(
return false; return false;
} }
if (multiboot2_header->arch != KERNAUX_MULTIBOOT2_HEADER_ARCH_NONE && if (multiboot2_header->arch != KERNAUX_MULTIBOOT2_HEADER_ARCH_I386 &&
multiboot2_header->arch != KERNAUX_MULTIBOOT2_HEADER_ARCH_I386 &&
multiboot2_header->arch != KERNAUX_MULTIBOOT2_HEADER_ARCH_MIPS32) multiboot2_header->arch != KERNAUX_MULTIBOOT2_HEADER_ARCH_MIPS32)
{ {
return false; return false;

View File

@ -13,7 +13,11 @@ void KernAux_Multiboot2_Header_print(
) { ) {
printf("Multiboot 2 header\n"); printf("Multiboot 2 header\n");
printf(" magic: %u\n", multiboot2_header->magic); printf(" magic: %u\n", multiboot2_header->magic);
printf(" arch: %u\n", multiboot2_header->arch); printf(
" arch: %u (%s)\n",
multiboot2_header->arch,
KernAux_Multiboot2_Header_Arch_to_str(multiboot2_header->arch)
);
printf(" size: %u\n", multiboot2_header->total_size); printf(" size: %u\n", multiboot2_header->total_size);
printf(" checksum: %u\n", multiboot2_header->checksum); printf(" checksum: %u\n", multiboot2_header->checksum);

View File

@ -13,9 +13,9 @@
static const char output2[] = static const char output2[] =
"Multiboot 2 header\n" "Multiboot 2 header\n"
" magic: 3897708758\n" " magic: 3897708758\n"
" arch: 1\n" " arch: 0 (i386)\n"
" size: 272\n" " size: 272\n"
" checksum: 397258265\n" " checksum: 397258266\n"
"Multiboot 2 header tag\n" "Multiboot 2 header tag\n"
" type: 1 (information request)\n" " type: 1 (information request)\n"
" flags: 0\n" " flags: 0\n"