Applied, thanks!
Damien Zammit, le jeu. 24 oct. 2024 00:11:04 +0000, a ecrit:
> This change forces multiboot loader to provide video mode info
> and also sets the preferred video mode to EGA text to ensure
> existing console behaviour still works.
>
> When support for graphical consoles is provided, we can change
> the preferred mode to linear framebuffer.
>
> ---
> i386/i386at/boothdr.S | 24 ++++++++++++++++++------
> i386/include/mach/i386/multiboot.h | 8 ++++++--
> 2 files changed, 24 insertions(+), 8 deletions(-)
>
> diff --git a/i386/i386at/boothdr.S b/i386/i386at/boothdr.S
> index daaf57db..ff055746 100644
> --- a/i386/i386at/boothdr.S
> +++ b/i386/i386at/boothdr.S
> @@ -1,9 +1,17 @@
>
> #include <mach/machine/asm.h>
> +#include <mach/machine/multiboot.h>
> #include <i386/apic.h>
> #include <i386/seg.h>
> #include <i386/i386asm.h>
>
> +#ifdef __ELF__
> +#define AOUT_KLUDGE 0
> +#else
> +#define AOUT_KLUDGE MULTIBOOT_AOUT_KLUDGE
> +#endif /* __ELF__ */
> +#define MULTIBOOT_FLAGS MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO |
> MULTIBOOT_VIDEO_MODE | AOUT_KLUDGE
> +
> /*
> * This section will be put first into .text. See also i386/ldscript.
> */
> @@ -16,12 +24,6 @@ _start:
> jmp boot_entry
>
> /* MultiBoot header - see multiboot.h. */
> -#define MULTIBOOT_MAGIC 0x1BADB002
> -#ifdef __ELF__
> -#define MULTIBOOT_FLAGS 0x00000003
> -#else /* __ELF__ */
> -#define MULTIBOOT_FLAGS 0x00010003
> -#endif /* __ELF__ */
> P2ALIGN(2)
> boot_hdr:
> .long MULTIBOOT_MAGIC
> @@ -37,7 +39,17 @@ boot_hdr:
> .long _edata /* load_end_addr */
> .long _end /* bss_end_addr */
> .long boot_entry /* entry */
> +#else
> + .long 0
> + .long 0
> + .long 0
> + .long 0
> + .long 0
> #endif /* __ELF__ */
> + .long MULTIBOOT_VIDEO_MODE_TYPE_EGA_TEXT
> + .long 80
> + .long 25
> + .long MULTIBOOT_VIDEO_PARAM_NO_PREFERENCE
>
> boot_entry:
> movl $percpu_array - KERNELBASE, %eax
> diff --git a/i386/include/mach/i386/multiboot.h
> b/i386/include/mach/i386/multiboot.h
> index 87bcd595..8df5261f 100644
> --- a/i386/include/mach/i386/multiboot.h
> +++ b/i386/include/mach/i386/multiboot.h
> @@ -23,8 +23,6 @@
> #ifndef _MACH_I386_MULTIBOOT_H_
> #define _MACH_I386_MULTIBOOT_H_
>
> -#include <mach/machine/vm_types.h>
> -
> /* The entire multiboot_header must be contained
> within the first MULTIBOOT_SEARCH bytes of the kernel image. */
> #define MULTIBOOT_SEARCH 8192
> @@ -74,6 +72,10 @@
>
> #define MULTIBOOT_VIDEO_PARAM_NO_PREFERENCE 0
>
> +#ifndef __ASSEMBLER__
> +
> +#include <mach/machine/vm_types.h>
> +
> /* The mods_addr field above contains the physical address of the first
> of 'mods_count' multiboot_module structures. */
> struct multiboot_module
> @@ -277,4 +279,6 @@ struct multiboot_os_info {
> uint32_t mods_count;
> };
>
> +#endif /* __ASSEMBLER__ */
> +
> #endif /* _MACH_I386_MULTIBOOT_H_ */
> --
> 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."