bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/3] multiboot v1: Add video framebuffer info


From: Samuel Thibault
Subject: Re: [PATCH 1/3] multiboot v1: Add video framebuffer info
Date: Sat, 26 Oct 2024 23:39:04 +0200

Applied, thanks!

Damien Zammit, le jeu. 24 oct. 2024 00:10:56 +0000, a ecrit:
> ---
>  i386/include/mach/i386/multiboot.h | 72 ++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
> 
> diff --git a/i386/include/mach/i386/multiboot.h 
> b/i386/include/mach/i386/multiboot.h
> index c3538c1f..87bcd595 100644
> --- a/i386/include/mach/i386/multiboot.h
> +++ b/i386/include/mach/i386/multiboot.h
> @@ -43,6 +43,9 @@
>  /* Must be provided memory information in multiboot_raw_info structure */
>  #define MULTIBOOT_MEMORY_INFO        0x00000002
>  
> +/* Must pass video information in multiboot_raw_info structure */
> +#define MULTIBOOT_VIDEO_MODE 0x00000004
> +
>  /* Use the load address fields above instead of the ones in the a.out header
>     to figure out what to load where, and what to do afterwards.
>     This should only be needed for a.out kernel images
> @@ -62,7 +65,14 @@
>  #define MULTIBOOT_AOUT_SYMS  0x00000010
>  #define MULTIBOOT_ELF_SHDR   0x00000020
>  #define MULTIBOOT_MEM_MAP    0x00000040
> +/* skip some fields from spec */
> +#define MULTIBOOT_FRAMEBUFFER        0x00001000
> +
>  
> +#define MULTIBOOT_VIDEO_MODE_TYPE_LINEARFB   0
> +#define MULTIBOOT_VIDEO_MODE_TYPE_EGA_TEXT   1
> +
> +#define MULTIBOOT_VIDEO_PARAM_NO_PREFERENCE  0
>  
>  /* The mods_addr field above contains the physical address of the first
>     of 'mods_count' multiboot_module structures.  */
> @@ -148,6 +158,38 @@ struct multiboot32_module
>  #define MULTIBOOT_LOADER_SHDR       0x20
>  #define MULTIBOOT_LOADER_MMAP       0x40
>  
> +struct multiboot_header
> +{
> +    /* Must be MULTIBOOT_MAGIC - see above. */
> +    uint32_t magic;
> +
> +    /* Feature flags. */
> +    uint32_t flags;
> +
> +    /* The above fields plus this one must equal 0 mod 2^32. */
> +    uint32_t checksum;
> +
> +    /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */
> +    uint32_t header_addr;
> +    uint32_t load_addr;
> +    uint32_t load_end_addr;
> +    uint32_t bss_end_addr;
> +    uint32_t entry_addr;
> +
> +    /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */
> +    uint32_t mode_type;
> +    uint32_t width;
> +    uint32_t height;
> +    uint32_t depth;
> +} __packed;
> +
> +struct multiboot_color
> +{
> +    uint8_t red;
> +    uint8_t green;
> +    uint8_t blue;
> +} __packed;
> +
>  /*
>   * A multiboot module.
>   */
> @@ -168,6 +210,35 @@ struct multiboot_raw_mmap_entry {
>      uint32_t type;
>  } __packed;
>  
> +struct multiboot_framebuffer_info {
> +    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;
> +        };
> +    };
> +} __packed;
> +
>  /*
>   * Multiboot information structure as passed by the boot loader.
>   */
> @@ -186,6 +257,7 @@ struct multiboot_raw_info {
>      uint32_t mmap_length;
>      uint32_t mmap_addr;
>      uint32_t unused1[9];
> +    struct multiboot_framebuffer_info fb_info;
>  } __packed;
>  
>  /*
> -- 
> 2.45.2
> 
> 
> 

-- 
Samuel
 > Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me
 > disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que
 > vous teniez vous même la tronçonneuse" (traduction libre)
 NC in Guide du linuxien pervers : "Bien configurer sa tronçonneuse."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]