diff --git a/sys/arch/i386/include/multiboot.h b/sys/arch/i386/include/multiboot.h index f4442f1a7dc4..6d87aa21935d 100644 --- a/sys/arch/i386/include/multiboot.h +++ b/sys/arch/i386/include/multiboot.h @@ -1,4 +1,4 @@ -/* $NetBSD: multiboot.h,v 1.9 2018/04/13 01:49:47 khorben Exp $ */ +/* $NetBSD: multiboot.h,v 1.10 2018/11/13 11:01:54 mlelstv Exp $ */ /*- * Copyright (c) 2005, 2006 The NetBSD Foundation, Inc. @@ -86,6 +86,7 @@ extern struct multiboot_header *Multiboot_Header; #define MULTIBOOT_INFO_HAS_LOADER_NAME 0x00000200 #define MULTIBOOT_INFO_HAS_APM_TABLE 0x00000400 #define MULTIBOOT_INFO_HAS_VBE 0x00000800 +#define MULTIBOOT_INFO_HAS_FRAMEBUFFER 0x00001000 #if !defined(_LOCORE) struct multiboot_info { @@ -138,6 +139,32 @@ struct multiboot_info { uint16_t unused_mi_vbe_interface_seg; uint16_t unused_mi_vbe_interface_off; uint16_t unused_mi_vbe_interface_len; + + /* Valid if mi_flags sets MULTIBOOT_INFO_HAS_FRAMEBUFFER. */ + uint64_t framebuffer_addr; + uint32_t framebuffer_pitch; + uint32_t framebuffer_width; + uint32_t framebuffer_height; + uint8_t framebuffer_bpp; +#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 +#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 +#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 + uint8_t framebuffer_type; + union { + struct { + uint32_t framebuffer_palette_addr; + uint16_t framebuffer_palette_num_colors; + }; + struct { + uint8_t framebuffer_red_field_position; + uint8_t framebuffer_red_mask_size; + uint8_t framebuffer_green_field_position; + uint8_t framebuffer_green_mask_size; + uint8_t framebuffer_blue_field_position; + uint8_t framebuffer_blue_mask_size; + }; + }; + }; /* --------------------------------------------------------------------- */