#include "multiboot.h" extern u8* MB_INFO; char mb_load_tag(char **data, char type){ char *c_info_size=MB_INFO; char *c_tag_type=c_info_size+8; char *c_tag_size=c_info_size+12; for(int i=0;i<10;i++){ int tag_type=*((int*)c_tag_type); int tag_size=*((int*)c_tag_size); if(tag_type==type){ *data=c_tag_type; return 0; } c_tag_type=c_tag_type+tag_size+4; // Skip padding for 64 bits int p=c_tag_type; while((p & 0x7) != 0) p++; // Assign address after padding c_tag_type=p; c_tag_size=c_tag_type+4; } return 1; } char mb_load_bl_name(MBI_TAG_BL_NAME *data){ char *to_load; if(!mb_load_tag(&to_load,2)){ memcpy(to_load,data,8); to_load+=8; data->name=to_load; return 0; } return 1; }