From 8b48f0bc716dbef50669e3b9e708f8265a406e41 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 23 Dec 2018 00:18:32 +0100 Subject: [PATCH 01/11] Update folder.desc --- src/boot/folder.desc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/boot/folder.desc b/src/boot/folder.desc index d6b3cab..56a7d6f 100644 --- a/src/boot/folder.desc +++ b/src/boot/folder.desc @@ -12,12 +12,17 @@ This folder contains the source for OS/K's bootloader. OS/K being intended to only run on x86-64 systems, we have not divided this folder into one sub-folder per architecture. -It is divided in two parts each of exactly 512 bytes: +It is divided in two parts : - mbr.s (and its auxiliary file mbr.inc) - This is our Master Boot Record (MBR). It switches to long mode - (64 bits mode) then loads the second half of the bootloader. - The MBR must be placed precisely on the first sector of the hard drive. + This is our Master Boot Record (MBR). It loads the second half of the + bootloader which is located on the root directory (FAT16). + The MBR must be placed precisely on the first sector of the hard drive, + or on the first sector of an activated partition of the hard drive. + This file is 512 B sized. - loader.s - This is the Kernel Loader. XXX - + This is the Kernel Loader. It is a pure binary executable located on the + root directory of the disk/partition. It established A20 line, switches + into long mode and can print messages in color. It is intended to load + the kernel elf executable and call it. + This file must be < 2 GB sized. From b952d9d9007db93c04c6a0d1a9e36aecd53b8362 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 23 Dec 2018 17:52:55 +0100 Subject: [PATCH 02/11] Issue with length of loader.bin, and can't load kernel for now --- bin/disk.img | Bin 18944000 -> 18944000 bytes bin/loader.bin | Bin 1002 -> 1171 bytes bin/mbr.bin | Bin 512 -> 512 bytes obj/boot/loader.bin | Bin 1002 -> 1171 bytes obj/boot/mbr.bin | Bin 512 -> 512 bytes src/boot/loader.s | 80 +++++++++++++++++++++++++++++------------- src/boot/loader16.inc | 1 + src/boot/mbr.inc | 3 +- 8 files changed, 58 insertions(+), 26 deletions(-) diff --git a/bin/disk.img b/bin/disk.img index beefdec936f8d328364a9e9bbb1f74bb163acbb4..10b049d2fd39dbb9423802f166b70d3f1f7e671e 100644 GIT binary patch delta 73812 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 delta 9340 zcmeHLZ)_Ar6rb51*ZZ@3cWh}>iU}>Y2GrKJ2Olhj_9~VuwYHYFL_$i+pHhPqD11Ok zXc6NVOd5LWttJw|4_X0Dp<)$b0r>#fK%yifF$M}0wh*-xjImPI_h$C4TR0Gm1QYj~ z+j;lq&CHwM{Ps69ZQ1swvjx7Lc89E+K7@U`x8%oZvl8aH(X; z2S%D$I><~&q;EdU2506aADQ6O`84}*0u2P`5B2qAB_L8t{O~1Y8qBcoRdCgjC1feq zbG$G(3+mUBCZ*Xyor$IX(mMx-sa&v!eYCKxBdfd7N6UR(2L_&tZyPv}zEakH(QCD> zy7!I5xEj@-pq4NmW%|C+A>7tP`@yVilN?XDJ3Gf zh2SPzMmic-e_U95B)Hj@@fiFHQiwH`^e8=gbzcQmV{mW^uby%mJ55)Lo9JZ0C55&O zB`BSKVO&TVJk^Z-wAwPpL9w3W660LEEL;aCumaSKWvH zT$BF^9?zCG#pL&(EvZjpTLElX+HYm;1ih)8Eud+zvNz+x>!{}`-&gHr?I226O7K1r zl9k0Y2OmD}H|mvV*U@Q`xq(MnzmEDxxxDboJs*!xcAJlZd8xNvq;<(urxUjf6`_5t#*1*&uR#W_@f`PC95xV$rN@&b{JAc0ejOiPMW>E9r=jyO zDv^KHh!TAx)Tn1=RHF7#N(8yVWsB#74A5ZZASx;x;3_hucVcAnPt! zOBx=!(bGkR#WqA~%?L^-0HyN`rFTZ51isiPeloR|yr4@MQuv``NB3u(e#x<37&jJuDn=hKSS zCfLuRZKy&RZ3A}ZH(+O58`}y!d?&`O5ESAQS#uf+Q3DEbZ1N9~Z!aULGK!$!i%n3m zFiOzNGKT_6CXtsR8Ad@Jji^Na4!@9kSRE-%6vSYpAXak<>P#YMP)XUnoF;`14en^b zK7fwDLc!@+$LYv$c@1qhOari3fwrhBXtNlJ`>WCKQ5h~J+>S^3&Hx*5`Bc^%1}@eA zaa{63+lFj-=6yuSd=HFypzT&PZ?~K=4`)-&3vC=s3aNv;8t%5aGP~ zE%FNj+khqRpT{Y}=u*mUwiy?I%{N+?L6>=qE*2>4^f3w)8Xx;mufU=HZKbh^CPbKw zw>KXp%I*tv9KP<&u}}Lh{#rAMbMcEDlQ_5Ov@e=Y`x5uF)4uWQv(vtZpYZXt4{Hf0 z{4;QQ>w%p;^647*(`O6$1UD$;c;_R(=uS7|lrVx)?CY+961(oY)E&rjcHMQGuDhb? zx+`%%yY3n&vFomfUvcpY2PnZ6_w-#*a_$*ui7PRNt;Cnb7`7N~x9UKh%|lyMRZJ%f zZHfCQp=}JCgtoW)_yl^x2LE!<1iqyF7pC-`9ZC#y?igN2=VPNsVdJQZo mu$0hJLQ4rPCA5^#QbJ1!EhV&+&{9H62`wf3|0&_N{J#L<^PK1qr=)`#Vf#J_y?F3HE^J?q(2E=Yru_f)<<*D(3?KSg?+7z6^t0X)o~*>!B5?!A$zu3#dI3nk`UfN= z7(9-%sNS2rk5P&7-sFdjQla;NqD&smEUMo?jMum0;|_atv#7oU@;n%UN|9*BRdmKQSdUFI}M|BUQmWwJ0w& zMKV{$dl)`&GQ3#&_y7OR-23heF)+N?3u5!{s{pY# zg4kTZ7zDDxYWRV%2xQMh67PkmUknm&L=rEBh#vxpXClPKUc`bpy!(EDBm#l#mkodZ G{|5jxyY1ls delta 521 zcmbQt`HEe(=S1I)z5^X%`~t7`2rwW6D*>sAA~vi70*fRBCWgk<@5>c>@$P@zi@E># zn}nIe_OS@Rxc`6OE}<7U|HnO<#KZJ#5?Ji?{}<{1U-U*U zQ~m${e?5?$_TNlG07wW3ypj;)09)D5DkjLl(9bFYB-3^XFo4|D_n_}Z-vxe!2hArG z_>~?^wq?wgkN`R{i{Zbi0FZu_EX=?l!QgS6MU`vv0Y;^IE+9WFe2oo5iGmGRiM$PO ziRG$}8>>8;feL_9Ody65i1GS%eB5D=ZWdK3AkTvlA`PP%k24;By(<7D4N~l(36a*k z4zdU&0s;}QXS|-qsSsSAS(2QQnU}6mlCLoNB9p@86ebZNr~Ld9keGk4zPExRFBdP@ zpR$%f3vtP1|#T)dO-GAmC0!DLzA4{-sI5(1jLhv5S!!wb8A|Nn31-Zxo@f#F3M zh|Rxm8Hnu#Vsill9moc&;RgmikZpt{t_D#b01}r%66XW4dG~37^fCe2ui5rp6nb%% O^PK1qr=)`#Vf#J_y?F3HE^J?q(2E=Yru_f)<<*D(3?KSg?+7z6^t0X)o~*>!B5?!A$zu3#dI3nk`UfN= z7(9-%sNS2rk5P&7-sFdjQla;NqD&smEUMo?jMum0;|_atv#7oU@;n%UN|9*BRdmKQSdUFI}M|BUQmWwJ0w& zMKV{$dl)`&GQ3#&_y7OR-23heF)+N?3u5!{s{pY# zg4kTZ7zDDxYWRV%2xQMh67PkmUknm&L=rEBh#vxpXClPKUc`bpy!(EDBm#l#mkodZ G{|5jxyY1ls delta 521 zcmbQt`HEe(=S1I)z5^X%`~t7`2rwW6D*>sAA~vi70*fRBCWgk<@5>c>@$P@zi@E># zn}nIe_OS@Rxc`6OE}<7U|HnO<#KZJ#5?Ji?{}<{1U-U*U zQ~m${e?5?$_TNlG07wW3ypj;)09)D5DkjLl(9bFYB-3^XFo4|D_n_}Z-vxe!2hArG z_>~?^wq?wgkN`R{i{Zbi0FZu_EX=?l!QgS6MU`vv0Y;^IE+9WFe2oo5iGmGRiM$PO ziRG$}8>>8;feL_9Ody65i1GS%eB5D=ZWdK3AkTvlA`PP%k24;By(<7D4N~l(36a*k z4zdU&0s;}QXS|-qsSsSAS(2QQnU}6mlCLoNB9p@86ebZNr~Ld9keGk4zPExRFBdP@ zpR$%f3vtP1|#T)dO-GAmC0!DLzA4{-sI5(1jLhv5S!!wb8A|Nn31-Zxo@f#F3M zh|Rxm8Hnu#Vsill9moc&;RgmikZpt{t_D#b01}r%66XW4dG~37^fCe2ui5rp6nb%% O 2.0 kB... diff --git a/src/boot/loader16.inc b/src/boot/loader16.inc index 56d9840..a30cff9 100644 --- a/src/boot/loader16.inc +++ b/src/boot/loader16.inc @@ -7,6 +7,7 @@ ; Desc: Kernel (second stage) Loader for OS/K INCLUDED FUNCTIONS ; ; (x86_64 architecture only) ; ;=----------------------------------------------------------------------------=; + [BITS 16] disable_cursor: diff --git a/src/boot/mbr.inc b/src/boot/mbr.inc index 5e06bc9..0e121e6 100644 --- a/src/boot/mbr.inc +++ b/src/boot/mbr.inc @@ -7,6 +7,7 @@ ; Desc: Bootsector for OS/K INCLUDED FUNCTIONS ; ; (x86_64 architecture only) ; ;=----------------------------------------------------------------------------=; +[BITS 16] read_clusters: ;---------------------------------------------------; @@ -100,7 +101,7 @@ read_sectors: shl ah, 1 or cl, ah ; Now cx is set with respective track and sector numbers mov dl, byte [Bootdrv] ; Set correct Bootdrv for int 13h - mov di, 5 ; Try five times to read the sector because i love 5 + mov di, 21 ; Try five times to read the sector because i love 21 .attempt_read: mov ax, 0x0201 ; Read Sectors func of int 13h, read one sector int 0x13 ; Call int 13h (BIOS disk I/O) From 3c5dc9d6e5e17c4e3d17de1442b0890b08651635 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 23 Dec 2018 20:51:14 +0100 Subject: [PATCH 03/11] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d9140ea..ce35d86 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 +Branch boot : Development focused on the bootloader of OS/K For changelog, see src/ChangeLog. From 96b2eca790b643710f5bdcb816a9bf3391232341 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 27 Dec 2018 09:12:42 +0100 Subject: [PATCH 04/11] cleanup --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index d0d301c..dbcf818 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,7 @@ Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 -<<<<<<< HEAD Branch boot : Development focused on the bootloader of OS/K -======= -Branch kaleid : Development focused on the Kaleid Kernel. ->>>>>>> kaleid For changelog, see src/ChangeLog. From 65471275c07f3403e346fd8d8b9615fd16166c82 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Mon, 14 Jan 2019 15:33:50 +0100 Subject: [PATCH 05/11] merging master --- src/boot/folder.desc | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 src/boot/folder.desc diff --git a/src/boot/folder.desc b/src/boot/folder.desc deleted file mode 100644 index 56a7d6f..0000000 --- a/src/boot/folder.desc +++ /dev/null @@ -1,28 +0,0 @@ -//----------------------------------------------------------------------------// -// GNU GPL OS/K // -// // -// Authors: spectral` // -// NeoX // -// // -// Desc: Folder description - "boot" // -//----------------------------------------------------------------------------// - - -This folder contains the source for OS/K's bootloader. -OS/K being intended to only run on x86-64 systems, we have not divided -this folder into one sub-folder per architecture. - -It is divided in two parts : - - mbr.s (and its auxiliary file mbr.inc) - This is our Master Boot Record (MBR). It loads the second half of the - bootloader which is located on the root directory (FAT16). - The MBR must be placed precisely on the first sector of the hard drive, - or on the first sector of an activated partition of the hard drive. - This file is 512 B sized. - - - loader.s - This is the Kernel Loader. It is a pure binary executable located on the - root directory of the disk/partition. It established A20 line, switches - into long mode and can print messages in color. It is intended to load - the kernel elf executable and call it. - This file must be < 2 GB sized. From 425487c2e9cb858fdf54529803da245c0d261d6b Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Mon, 14 Jan 2019 20:33:38 +0100 Subject: [PATCH 06/11] Update Readme.md --- Readme.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Readme.md b/Readme.md index 1c449a7..42e4585 100644 --- a/Readme.md +++ b/Readme.md @@ -1,12 +1,13 @@ # GNU-GPL OS/K (OS on Kaleid) -Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 +### Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 +#### Boot Branch -Branch kaleid : Development focused on the Kaleid Kernel. +For the project plan, see [OS/K Project](https://github.com/orgs/os-k-team/projects/1) -For changelog, see ChangeLog. +For changelog, see [ChangeLog](https://github.com/os-k-team/GNU-GPL-OS-K/blob/master/ChangeLog) -For structure of the sources, see src/project-tree.txt. +For structure of the sources, see [ProjectTree](https://github.com/os-k-team/GNU-GPL-OS-K/blob/master/ProjectTree) Note that every file within OS/K is written using spaces for tabulation, with each tabulation being 4 spaces long. From 0528ddbd9f794e807fdf0a12f127b56d630693d3 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Mon, 14 Jan 2019 20:34:34 +0100 Subject: [PATCH 07/11] Update Readme.md --- Readme.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Readme.md b/Readme.md index 1c449a7..f201450 100644 --- a/Readme.md +++ b/Readme.md @@ -1,12 +1,13 @@ # GNU-GPL OS/K (OS on Kaleid) -Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 +### Fully open-source operating system from scratch (WIP), released under the GNU GPL version 3.0 +#### Kaleid Branch -Branch kaleid : Development focused on the Kaleid Kernel. +For the project plan, see [OS/K Project](https://github.com/orgs/os-k-team/projects/1) -For changelog, see ChangeLog. +For changelog, see [ChangeLog](https://github.com/os-k-team/GNU-GPL-OS-K/blob/master/ChangeLog) -For structure of the sources, see src/project-tree.txt. +For structure of the sources, see [ProjectTree](https://github.com/os-k-team/GNU-GPL-OS-K/blob/master/ProjectTree) Note that every file within OS/K is written using spaces for tabulation, with each tabulation being 4 spaces long. From c0b478f8f07777445d1cb5085f05be9fe55f2e95 Mon Sep 17 00:00:00 2001 From: Julian Barathieu Date: Mon, 14 Jan 2019 23:16:26 +0100 Subject: [PATCH 08/11] Bootloader makefile stuff --- Makefile | 20 ++++++++++++++++++++ Makefile.in | 16 ---------------- ProjectTree | 4 ++-- kaleid/common/atoi.c | 4 ++-- kaleid/common/status.c | 4 ++-- kaleid/common/strtol.c | 4 ++-- kaleid/include/common/kalcrt.h | 19 ++++++++++++++++++- kaleid/include/kernel/kernbase.h | 5 +++-- 8 files changed, 49 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 71e74a6..a9242fb 100644 --- a/Makefile +++ b/Makefile @@ -25,3 +25,23 @@ tests: make tests -f Makefile.out.2 rm Makefile.out Makefile.out.2 +ASM=nasm +ASMFLAGS= +BOOTFLAGS=-f bin + +BOOTDIR=boot +OBJDIR=build/obj +BINDIR=build/bin + +boot.mbr.asm: $(BOOTDIR)/mbr.asm $(BOOTDIR)/mbr.inc + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/mbr.asm -o $(OBJDIR)/boot/mbr.bin + +boot.loader.asm: $(BOOTDIR)/loader.asm + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/loader.asm -o $(OBJDIR)/boot/loader.bin + +bootloader: boot.mbr.asm boot.loader.asm + cp $(OBJDIR)/boot/mbr.bin $(BINDIR)/mbr.bin + cp $(OBJDIR)/boot/loader.bin $(BINDIR)/loader.bin + +all: bootloader kernel + diff --git a/Makefile.in b/Makefile.in index 5c26235..3b7a9c6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -22,10 +22,6 @@ CFLAGS=$(CFLAGS1) $(CFLAGS2) $(SFLAG) CC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CINCLUDES) -ASM=nasm -ASMFLAGS= -BOOTFLAGS=-f bin - BINDIR=./build/bin OBJDIR=./build/obj @@ -35,18 +31,6 @@ KERNDIR=kaleid/kernel SYSTDIR=kaleid/system LINXDIR=kaleid/common/test -all: bootloader kernel - -boot.mbr.s: $(BOOTDIR)/mbr.s $(BOOTDIR)/mbr.inc - $(ASM) $(BOOTFLAGS) $(BOOTDIR)/mbr.asm -o $(OBJDIR)/boot/mbr.bin - -boot.loader.s: $(BOOTDIR)/loader.s - $(ASM) $(BOOTFLAGS) $(BOOTDIR)/loader.asm -o $(OBJDIR)/boot/loader.bin - -bootloader: boot.mbr.s boot.loader.s - cp $(OBJDIR)/boot/mbr.bin $(BINDIR)/mbr.bin - cp $(OBJDIR)/boot/loader.bin $(BINDIR)/loader.bin - //----------------------------------------------------------------------------# // TESTING MAKEFILE diff --git a/ProjectTree b/ProjectTree index 90c5627..965face 100644 --- a/ProjectTree +++ b/ProjectTree @@ -60,8 +60,6 @@ src/ | | | + kernel/ | | | - | | - kernel.ld - | | | | | + init/ | | | | | | | - init.c @@ -99,6 +97,8 @@ src/ | | | - preproc.h | - iddtool.h + | | + | - kernel.ld | | | + bin/ | + obj/ diff --git a/kaleid/common/atoi.c b/kaleid/common/atoi.c index f5a22a6..0ea016c 100644 --- a/kaleid/common/atoi.c +++ b/kaleid/common/atoi.c @@ -15,9 +15,9 @@ // #define _ATOI_IMPL(_Name, _Type, _Func) \ _Type _Name(const char *str) { \ - error_t old = errno; \ + __get_errno(old); \ _Type ret = (_Type)_Func(str, NULL, 0); \ - errno = old; \ + __set_errno(old); \ return ret; \ } diff --git a/kaleid/common/status.c b/kaleid/common/status.c index 457e741..2866833 100644 --- a/kaleid/common/status.c +++ b/kaleid/common/status.c @@ -9,7 +9,7 @@ #include -error_t errno = 0; +error_t __errno = 0; /* static const char *descriptions[] = { @@ -17,7 +17,7 @@ static const char *descriptions[] = { [-FAILED] = "Failed (no precision)", [-NOT_PERMITTED] = "Operation not permitted", [-ACCESS_DENIED] = "Access denied", - + [-BAD_ARGUMENT] = "Bad argument", [-BAD_ARG_RANGE] = "Bad argument (not in range)", [-BAD_ARG_NULL] = "Bad argument (null pointer)", diff --git a/kaleid/common/strtol.c b/kaleid/common/strtol.c index 2e1aad6..7636822 100644 --- a/kaleid/common/strtol.c +++ b/kaleid/common/strtol.c @@ -13,7 +13,7 @@ long strtol(const char *str, char **endp, int base) { (void)str; (void)endp; (void)base; - errno = ENOSYS; + __set_errno(ENOSYS); return 0; } @@ -21,7 +21,7 @@ ulong strtoul(const char *str, char **endp, int base) { (void)str; (void)endp; (void)base; - errno = ENOSYS; + __set_errno(ENOSYS); return 0; } diff --git a/kaleid/include/common/kalcrt.h b/kaleid/include/common/kalcrt.h index 75e34e1..167ab52 100644 --- a/kaleid/include/common/kalcrt.h +++ b/kaleid/include/common/kalcrt.h @@ -43,7 +43,24 @@ typedef struct { long quot, rem; } ldiv_t; // Global variables // //------------------------------------------// -extern error_t errno; +#ifndef _KALEID_KERNEL + +extern error_t __errno; + +#ifndef errno +#define errno __errno +#endif + +#define __get_errno(x) error_t x = errno; +#define __set_errno(x) (errno = (x)) + +#else + +#define errno +#define __get_errno(x) +#define __set_errno(x) + +#endif //------------------------------------------// // Macros // diff --git a/kaleid/include/kernel/kernbase.h b/kaleid/include/kernel/kernbase.h index 171c048..baf8e95 100644 --- a/kaleid/include/kernel/kernbase.h +++ b/kaleid/include/kernel/kernbase.h @@ -184,7 +184,8 @@ void WriteByteOnPort(port_t port, port_t val) static inline uchar ReadByteFromPort(port_t port) { - errno = ENOSYS; + + KalAssert(FALSE && ENOSYS); (void)port; return 0; } @@ -192,7 +193,7 @@ uchar ReadByteFromPort(port_t port) static inline ushort ReadWordFromPort(port_t port) { - errno = ENOSYS; + KalAssert(FALSE && ENOSYS); (void)port; return 0; } From 35c71e4b24a206dba4b582376b19b716b7435dfe Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 15 Jan 2019 00:23:27 +0100 Subject: [PATCH 09/11] minor stuff with the A20 line '-' --- boot/elf/elf.c | 10 ++++++ boot/loader.asm | 70 ++++++++++++++++++++++---------------- build/bin/disk.img | Bin 18944000 -> 18944000 bytes build/bin/loader.bin | Bin 1171 -> 1221 bytes build/obj/boot/loader.bin | Bin 1171 -> 1221 bytes 5 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 boot/elf/elf.c diff --git a/boot/elf/elf.c b/boot/elf/elf.c new file mode 100644 index 0000000..5ce83ac --- /dev/null +++ b/boot/elf/elf.c @@ -0,0 +1,10 @@ +//----------------------------------------------------------------------------// +// GNU GPL OS/K // +// // +// Authors: spectral` // +// NeoX // +// // +// Desc: ELF64 Parser and Loader // +//----------------------------------------------------------------------------// + + diff --git a/boot/loader.asm b/boot/loader.asm index 5ec173a..7d7b9df 100644 --- a/boot/loader.asm +++ b/boot/loader.asm @@ -33,13 +33,6 @@ %define volumeLabel bp+0x2b ; Volume Label %define fatTypeLabel bp+0x36 ; File system type -;; DISK BUFFER "SEGMENT" -%define BUFFER_SEG 0x07c0 ; (BUFFER_SEG << 4) + BUFFER_OFF = 0x07C00 -%define BUFFER_OFF 0x0000 - -;; SECOND STAGE LOADER "SEGMENT" -%define LOAD_SEG LONG_SELECTOR-GDT64 ; (LOAD_SEG << 4) + LOAD_OFF = 0x070000 -%define LOAD_OFF Kernel [BITS 16] @@ -56,13 +49,13 @@ jmp 0x0000:main ;; GDT WITH DOC GDT64: NULL_SELECTOR: ;; null selector within 64 bits - dw GDT_LENGTH ; limit of GDT - dw GDT64 ; linear address of GDT - dd 0x0 ; + dw GDT_LENGTH ; limit of GDT + dw GDT64 ; linear address of GDT + dd 0x0 ; CODE_SELECTOR: ;; 32-bit code selector (ring 0) - dw 0x0FFFF ; Segment Limit - db 0x0, 0x0, 0x0 ; Base Address + dw 0x0000FFFF ; Segment Limit + db 0x0, 0x0, 0x0 ; Base Address db 10011010b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- 1 when segment used. ; | | | | | | `------ 1 when writable. @@ -72,7 +65,7 @@ GDT64: ; | | `---------- DPL !!! 0 for ring 0 ; | `----------- DPL (2/2) ; `------------ 1 if in physical memory, 0 if page fault - db 11001111b ; |7|6|5|4|3|2|1|0| + db 11001111b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- Limit 16 ; | | | | | | `------ Limit 17 ; | | | | | `------- Limit 18 @@ -81,11 +74,11 @@ GDT64: ; | | `---------- 0 always ; | `----------- size of data. 1 for 32bits ; `------------ 0 if limit is in Bytes, 1 if it's in pages (4ko) - db 0x0 ; Base Address + db 0x0 ; Base Address DATA_SELECTOR: ;; flat data selector (ring 0) - dw 0x0FFFF ; Segment Limit - db 0x0, 0x0, 0x0 ; Base Address + dw 0x0000FFFF ; Segment Limit + db 0x0, 0x0, 0x0 ; Base Address db 10010010b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- 1 when segment used. ; | | | | | | `------ 1 when writable. @@ -95,7 +88,7 @@ GDT64: ; | | `---------- DPL !!! 0 for ring 0 ; | `----------- DPL (2/2) ; `------------ 1 if in physical memory, 0 if page fault - db 10001111b ; |7|6|5|4|3|2|1|0| + db 10001111b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- Limit 16 ; | | | | | | `------ Limit 17 ; | | | | | `------- Limit 18 @@ -104,11 +97,11 @@ GDT64: ; | | `---------- 0 always ; | `----------- size of data. 1 for 32bits ; `------------ 0 if limit is in Bytes, 1 if it's in pages (4ko) - db 0x0 ; Base Address + db 0x0 ; Base Address LONG_SELECTOR: ;; 64-bit code selector (ring 0) - dw 0x0FFFF ; Segment Limit - db 0x0, 0x0, 0x0 ; Base Address + dw 0x0000FFFF ; Segment Limit + db 0x0, 0x0, 0x0 ; Base Address db 10011010b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- 1 when segment used. ; | | | | | | `------ 1 when writable. @@ -118,7 +111,7 @@ GDT64: ; | | `---------- DPL !!! 0 for ring 0 ; | `----------- DPL (2/2) ; `------------ 1 if in physical memory, 0 if page fault - db 10101111b ; |7|6|5|4|3|2|1|0| + db 10101111b ; |7|6|5|4|3|2|1|0| ; | | | | | | | `----- Limit 16 ; | | | | | | `------ Limit 17 ; | | | | | `------- Limit 18 @@ -127,7 +120,7 @@ GDT64: ; | | `---------- 0 always ; | `----------- size of data. 1 for 32bits ; `------------ 0 if limit is in Bytes, 1 if it's in pages (4ko) - db 0x0 ; Base Address + db 0x0 ; Base Address GDT_LENGTH: %include "boot/loader16.inc" @@ -195,6 +188,21 @@ main32: pop dword [VGA_HEIGHT32] pop dword [VIDEO_MODE32] + ;; VERIFY A20 + pushad + mov edi,0x112345 ;odd megabyte address. + mov esi,0x012345 ;even megabyte address. + mov [esi],esi ;making sure that both addresses contain diffrent values. + mov [edi],edi ;(if A20 line is cleared the two pointers would point to the address 0x012345 that would contain 0x112345 (edi)) + cmpsd ;compare addresses to see if the're equivalent. + popad + jne .A20_on ;if not equivalent , A20 line is set. + mov WORD [A20_OK], 0 + jmp .A20_end +.A20_on: + mov BYTE [A20_OK], 1 +.A20_end: + ;; INITIALIZE PROTECTED MODE SEGMENT REGISTERS mov ax, DATA_SELECTOR-GDT64 mov ds, ax @@ -260,6 +268,7 @@ KernSearch db 0x09, " Loading the Kernel in RAM...", 0 txt db 0x09, " Switching to Long Mode... ", 0 Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0 Pass db " OK", 0x0A, 0x0D, 0 +Fail db " FAIL!", 0x0A, 0x0D, 0 msg db "The system is now in x64 mode. Is this not beautiful ?", 0x0A, 0x0D, 0 NoLongMode db 0x0A, 0x0D, "ERROR : Your computer is not designed for x64 OS", 0 @@ -278,6 +287,7 @@ NextTRAM dq 0x0B8000 ; Last position of cursor VIDEO_MODE64 dq 0 VGA_HEIGHT64 dq 0 VGA_X dq 0 +A20_OK db 0 main64: pop qword [VGA_HEIGHT64] @@ -304,18 +314,17 @@ main64: mov esi, EnA20 call write + cmp BYTE [A20_OK], 1 + je .A20Success + mov bl, 0x0C + mov esi, Fail + call write + jmp Die +.A20Success: mov bl, 0x0A mov esi, Pass call write - mov bl, 0x0F - mov esi, KernSearch - call write - - mov bl, 0x0A - mov esi, Pass - call write - mov bl, 0x0F mov esi, txt call write @@ -328,6 +337,7 @@ main64: mov esi, msg call write + jmp Die ; times 1024 nop diff --git a/build/bin/disk.img b/build/bin/disk.img index 10b049d2fd39dbb9423802f166b70d3f1f7e671e..b2b0af2bb481b656002f06cf81335c46f3e9258e 100644 GIT binary patch delta 5122 zcmeI#c~sO@6u|NKh8bo+aDc%?a)A)dk}(lYaUo5DR1i|h%phCTv{F$EwSv?#)54(m zRZ5GM(qd^-(K=)s*~Mi-W`hW zS{zh_^)WWrt+uJ7OT$bBCAOGD{R(H?8dI;#UYSa*rVUdso0Y1)L?x(nm8d2tySinR z$|=pR7;JA|CoSt-X)nqk8IaP)l#$1|8QngMsR^_WnYBss3GdA0Fbi0gUX)#K*yrfm7@SYb1 z{_Z_n{D16^^TB%#(}^Me+%@IMh<)7TaILq^v6e;Ygzy0gC-qL~oisMFPjcV>$$b)o z`9m*Q%VuilkyA-Bwb5GAVACHMK^{|@WvgR#jiWTTA=hwuOqp>tj>*1$TOIY$;Wp(? zc6e^~?cH79;8P97mRg5W#g?xe#;j?2aa0Y@rYT?Ft+e&lNTs4wdbK&e&UoHyI!@P> z*6fTPQOBGqeUUldC!Ot|I!mTyae9x&=^h`-MSTvV zc#GZ;7<1at(?`Wt4oxzJ=t8+lu{r*GnrBr*kn*fL;PbiKxW9-{%JZ1??d}5US4cnD zy-WK3HFo!M>91h?%$#v!$DEO!Rh1eSuH30{T1{EnZ_3h?wd2p4aQ4J=a`WbfyF%Q1 zWcehPdspmlzLrgSvSg&Na>Z`bjDXgRHf7XXMT-7GS|>^pmq}VfoAzj=jLes`PHRo; zkzZ7AC8_!w-`3W&9_9V-T}Oid@DONC>rtk)DWl#sWcT-H>z}4oS7xo#DcVR$(VO(X z#;SGDu{tnPs#fyi-DHzhJ^eC#oG z9}yTybvxKp-SQ5rZo!nWVvCJA~W^L08I|MQ) zMera+s6K%wjYTjd(%9%V#hPe)PuCqrgfQc;gI%TbTOI7kGpU0z-Q2dQgR)rapiDQ` z!LE@<*1;fMC`C}NL=#EVSPNHjhEfa7yf2SS`gV7@93^X|A51>z``6gX6#Zhxv!2v^ z!t{aWc=@d3{gtniEX-%pdxad)O|SHq!s!gKzOrn$X=XpO0ANE(0_)?zW}aKcQ-jEhs#ZuDZg8X_|L;sZOD1JBqLA5gaDXfK_IM< z`5*+N4MGr#wy+}%;fR0(k!Xiw&>m6ffM^_xj_8EW=ziE8@`&-Elm6-~^nA zo=AWby>JqGBN2U&gudv9lhGdokc@#Cguxhs6r6&g7=}|Z9H}@BX-LQE7=e)(g$!h3 zG_sJ5GcX2YF%CI66XS6fCg5yL#5u@C9?r!ioQLyq0WQR3Oubh49jr?ZbUIw;3kxy z6gT4*l)=EQxDB^sC03yvci>Lkg}bpD_uyXKhc#G>3fzwe@E{(-Iy{U=upS%mC|r09 zkK+kc;z>M(r|}G)#dC0@3eRIBUcifZ2`}RnRO3}_!fSXPZ{SUA##?wB@8Df*!FzZg zAK*iLgsu1(pWst`hR^W@zC;bS;VXQNT6}{#c;H1nw&Ppuz<2l_4cLiY_yN1|BYwiq z*n?lN7yGau2XGL+W!(G4kYJJ!Ai*rbA|X(MRf0`Ikc40fZ6t(92$j%Qf?YzGgm4KF o5*!jDCA5=pjD+?Qq9k;X5G~K1+P?`-T(jq delta 5227 zcmd_s3!GF{9l-H(=CM0F%g)@H*}Kf_io1)#g2uu!JY+!@ipP>74+%^Sc?kr8@~|vQ z2rwv$g&o;j24xgTY5{G1`yvG)1&BKNwPt0&USX<at%&T3sZv4QSu=bdKqkfyA(*Mehe5>4W_HrA> z>abzWF`T2j*fWChHxr}ds}lbC+0K!+Clo)Ful(HWm0_7& z**-Pg{w29=TWi2f-P0;GoMEf%DIKylPSttV;U~3et)Hn^%#{mPx!UB>Y*UR{Dqemr zk*LkKt)Noz;gb99CnO&rxtDbyPtNhP8sw#E{jF2^Q0dQ;JjX7T`Cjsd4Eta(e(=oc zll6@W)!4ND)*BT%RBJd~E@wlpWijpOxv}>y-A``3n0H>d@d&Tv#TVna^o_b zy76MU@e<20oF(sh<8nc6JV2AW@e29E*><&j`B9Sl?KP6$BDvRgGBKW<APX zBsD*I;{|E`e#vv}_VQjQIg79_7=NBc(0gjNqrg?&nA2gxYP)7|4L@mV-N}V1EiG#P zGt@=nvGT^K@1mZJ*qp}B7k6dWmfg`mlWUh=Jo7(X+a2q9YPgYni<~g|Iv&+Kw(8Wd zqE{EEPMx%=tvfbC-AR_<&#zX-eD4$%ubi$Xs{2%_>Y}0y4N_gzu~Icc%~WI6EY9Xi z%Qs&aSkM~&r8>vu1$Qyp<~vH6)b%XBom z^N7yT@~+YHPF=k$_by#itzCWo_fFKF;_U!mfik)oRmh;;dztU|haR1ki+GO)8IBJ_t9CK*L+)M3Ok24p}*f7bP&RBoR zo6cBrPSY9dkk((Enx8ylW?FxiE9 zJ4TN&edczz+N>RWL$myyj_wT&dEhPkMQih6$6fA#xjJGdp9s6zkA}`a5su0jX-9MA ziSUI``V%32dlGg-D84)4IWRlCIL~Ko7^`nA_nX@1H@B;zrFGk>7>}GIF1amGwqwzA zw$t2_t=?Wc+gz}th;CiCX#bJ8y(TyQ%(>(H+?M}&nVz;Z@1=fsl`r$}~7xHWwpsnxMviWyVXj(fXx>y%lW#e`Jph8BICAYgI=Syx! zUP-By;pR52m`@fyu2dt0sdG&M9ccPXN>kN zBESJBTyP@;nUL`;c#(}3$bk=j7ziMU5OQH64=oW!1o^=N~( zC_y{4#|^j>DH}Nezif>~jR^dDNE*``8uo~aT53mMn@i^Auhj;={ z;wk(HKgN1&z()K8wfHH1hM!{-He(C6;uqM4U&6+A?7&X!!qa#LyYVa3;aU6|&tVUK zgS~hjzr{Z6#{v8fFW?|v#7p=+UdA8r3jT;c;mVM^f?Gm{giHw@30V@n z60#+)gGKDGW| D>UsL} diff --git a/build/bin/loader.bin b/build/bin/loader.bin index 011e0e70288552f87e806199803801943cf0647e..02ebbd014ecf745f40d4f102cbf108e83a42c596 100644 GIT binary patch delta 449 zcmbQtd6bj0=S1I)z5^X%zbA6Kv;Gra#3nK^G(ojo=*8RraWCflFY*oBCocTr!T-3h zeH(>d-1r~&WD*b4vq>P)iMQ0f*hJF)oBb1hB_+tgurFTt#gzZQzP$SIpW#D4E0+iZ zLq97AkWAR`sw~K`&sCX`q0_9>etBXkciM4Q9iR*Y!)x|qU>4(KHO3}MHlSD*!++C% z!VCBsI@&E3G$GQO*FiR^h)i~8+Q_Eh=IH68 zxcMs+Cu2QBKg1j$B?45xhv5S!!;9H}|Nr02y^jUx&KH|OZ2o<7g@EkkAT}2;aDZ&E z8h&7~0onaP@dg`Jke?Y#1UK{SlLe`$1d6_F{)5nx0Ws=1NJ|XFC@HX60U!?VJ~fao K7mzMLpe_J^N2oRc delta 401 zcmX@gIhm8Q=S1I)z5^X%XD4#HvtAHhbVGPzXo6~x(2KYK<6g}9U*sFM?~~Ar2mj;3 z_Voz8xbZ*k$s``8XOlpp6K|=j-VjdvZ+1cWm6RX{!#+dd7gPTK`ts_-e})hJtapSN z82VXn0m;eUj7^d^fQ&4L|E3p!^s9eBLW05LIE(5%;mOY!6;tm41;WDD*f5kR*l?A| z+whiHuIjk4%A*;if`Nev#P|kcyuKYDci5wwMfDw!=fMb(hS7}28IQl-6#$Y3DfZBW zNNZjP+4N0#at_nR&1%eSjP?Bx{Xps&P~9Ge51b4ymj33;K`$7y1FZP1i{QD|E z?2RBc7tp^zHdqZmFeHHNnMmTj5cP{e;*Ch+r4aE$An{CuxY&zW5Qlf)50FG4ko~gZ H&;S1bb#k&3 diff --git a/build/obj/boot/loader.bin b/build/obj/boot/loader.bin index 011e0e70288552f87e806199803801943cf0647e..02ebbd014ecf745f40d4f102cbf108e83a42c596 100644 GIT binary patch delta 449 zcmbQtd6bj0=S1I)z5^X%zbA6Kv;Gra#3nK^G(ojo=*8RraWCflFY*oBCocTr!T-3h zeH(>d-1r~&WD*b4vq>P)iMQ0f*hJF)oBb1hB_+tgurFTt#gzZQzP$SIpW#D4E0+iZ zLq97AkWAR`sw~K`&sCX`q0_9>etBXkciM4Q9iR*Y!)x|qU>4(KHO3}MHlSD*!++C% z!VCBsI@&E3G$GQO*FiR^h)i~8+Q_Eh=IH68 zxcMs+Cu2QBKg1j$B?45xhv5S!!;9H}|Nr02y^jUx&KH|OZ2o<7g@EkkAT}2;aDZ&E z8h&7~0onaP@dg`Jke?Y#1UK{SlLe`$1d6_F{)5nx0Ws=1NJ|XFC@HX60U!?VJ~fao K7mzMLpe_J^N2oRc delta 401 zcmX@gIhm8Q=S1I)z5^X%XD4#HvtAHhbVGPzXo6~x(2KYK<6g}9U*sFM?~~Ar2mj;3 z_Voz8xbZ*k$s``8XOlpp6K|=j-VjdvZ+1cWm6RX{!#+dd7gPTK`ts_-e})hJtapSN z82VXn0m;eUj7^d^fQ&4L|E3p!^s9eBLW05LIE(5%;mOY!6;tm41;WDD*f5kR*l?A| z+whiHuIjk4%A*;if`Nev#P|kcyuKYDci5wwMfDw!=fMb(hS7}28IQl-6#$Y3DfZBW zNNZjP+4N0#at_nR&1%eSjP?Bx{Xps&P~9Ge51b4ymj33;K`$7y1FZP1i{QD|E z?2RBc7tp^zHdqZmFeHHNnMmTj5cP{e;*Ch+r4aE$An{CuxY&zW5Qlf)50FG4ko~gZ H&;S1bb#k&3 From bf6e59eb06ae447bd717883f53c0fef5a6d92b28 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 15 Jan 2019 12:28:53 +0100 Subject: [PATCH 10/11] ATA reading stuff '-' --- boot/loader.asm | 14 ++++- boot/loader64.inc | 125 +++++++++++++++++++++++++++++++++++++- build/bin/disk.img | Bin 18944000 -> 18944000 bytes build/bin/loader.bin | Bin 1221 -> 1944 bytes build/obj/boot/loader.bin | Bin 1221 -> 1944 bytes 5 files changed, 137 insertions(+), 2 deletions(-) diff --git a/boot/loader.asm b/boot/loader.asm index 7d7b9df..43f5fe8 100644 --- a/boot/loader.asm +++ b/boot/loader.asm @@ -264,7 +264,7 @@ main32: Init db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0x09, " Checking CPUID...",0 CPUIDD db 0x09, " Checking CPUID...", 0 EnA20 db 0x09, " Enabling A20 line...", 0 -KernSearch db 0x09, " Loading the Kernel in RAM...", 0 +ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0x0A, 0x0D, 0x0A, 0x0D,0 txt db 0x09, " Switching to Long Mode... ", 0 Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0 Pass db " OK", 0x0A, 0x0D, 0 @@ -337,6 +337,18 @@ main64: mov esi, msg call write + mov bl, 0x0F + mov esi, ReadAttempt + call write + + mov rcx, 2 +.looping: + nop + nop + nop + loop .looping ; Temporized because the ATA drive must be ready + + call ata_read jmp Die diff --git a/boot/loader64.inc b/boot/loader64.inc index f6611fb..28d8145 100644 --- a/boot/loader64.inc +++ b/boot/loader64.inc @@ -71,6 +71,129 @@ write: pop rax jmp .pLoop .scroll: - ; XXX ; + ; XXX I don't think I'll implement this, but never know...; jmp .pLoop + +dump: +;-----------------------------------------------------------------------; +; x64/LM Dump Printing Functions ; +; bl : color code ; +; esi : string address ; +;-----------------------------------------------------------------------; + mov edi, [NextTRAM] ; TRAM ADDRESS + push rsi + push rdi + push rcx + mov rcx, 512 +.pLoop: + lodsb + stosb ; text subpixel + mov al, bl + stosb ; color subpixel + add qword [NextTRAM], 0x2 ; Cursor moving + add qword [VGA_X], 0x2 ; coord + 2 because 2 subpixels + loop .pLoop + pop rcx + pop rdi + pop rsi + ret +ata_read: +;-----------------------------------------------------------------------; +; x64/LM ATA Reading function ; +; ; +; ; +;-----------------------------------------------------------------------; + +; Technical infos about the ports (Intel Doc): +; +; Port Access Mode Misc +; +; 1f0 r/w Data register, the bytes of the disk itself +; 1f1 r Error register that can be handled +; 1f2 r/w Sector count, how many sectors to read +; 1f3 r/w Sector number, the actual sector wanted +; 1f4 r/w Cylinder low, cylinders is 0-1024 +; 1f5 r/w Cylinder high, this makes up the rest of the 1024 +; 1f6 r/w Drive/head +; bit 7 = 1 +; bit 6 = 0 +; bit 5 = 1 +; bit 4 = 0 drive 0 select +; = 1 drive 1 select +; bit 3-0 head select bits +; 1f7 r Status register +; bit 7 = 1 controller is executing a command +; bit 6 = 1 drive is ready +; bit 5 = 1 write fault +; bit 4 = 1 seek complete +; bit 3 = 1 sector buffer requires servicing +; bit 2 = 1 disk data read corrected +; bit 1 = 1 index - set to 1 each revolution +; bit 0 = 1 previous command ended in an error +; 1f7 w Command register +; commands: +; 50h format track +; 20h read sectors with retry +; 21h read sectors without retry +; 22h read long with retry +; 23h read long without retry +; 30h write sectors with retry +; 31h write sectors without retry +; 32h write long with retry +; 33h write long without retry +; + + push rax + push rbx + push rdx + push rcx + push rdi + mov dx,1f6h ;Drive and head port + mov al,0a0h ;Drive 0, head 0 + out dx,al + + mov dx,1f2h ;Sector count port + mov al,1 ;Read one sector + out dx,al + + mov dx,1f3h ;Sector number port + mov al,1 ;Read sector one + out dx,al + + mov dx,1f4h ;Cylinder low port + mov al,0 ;Cylinder 0 + out dx,al + + mov dx,1f5h ;Cylinder high port + mov al,0 ;The rest of the cylinder 0 + out dx,al + + mov dx,1f7h ;Command port + mov al,20h ;Read with retry. + out dx,al +still_going: + in al,dx + test al,8 ;This means the sector buffer requires + ;servicing. + jz still_going ;Don't continue until the sector buffer + ;is ready. + + mov cx,512/2 ;One sector /2 + mov rdi,buffer + mov dx,1f0h ;Data port - data comes in and out of here. + rep insw + pop rdi + pop rcx + pop rdx + pop rbx + pop rax + mov bl, 0x0F + mov esi, buffer + call dump + mov bl, 0x0A + mov esi, end + call write + ret + buffer: times 512 db "_" + end: db "[End of Sector]", 0x0 diff --git a/build/bin/disk.img b/build/bin/disk.img index b2b0af2bb481b656002f06cf81335c46f3e9258e..087b3f3ae05ffe22a18c93b8211107f2d59cde34 100644 GIT binary patch delta 30744 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 delta 11044 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 diff --git a/build/bin/loader.bin b/build/bin/loader.bin index 02ebbd014ecf745f40d4f102cbf108e83a42c596..096e80a677dc1a99d6ef20f8c99f89342a5542a8 100644 GIT binary patch literal 1944 zcmeHI-Af!-6hC9NYgV_jwzw^M>50KYUaW>jXs{%jY*|sG?pi-0)o$Fm?pECivv;u{ z4_%OglAt1`gkoq3g_cCit<=~Mg-*|%=|>)H|ABTM z&iUPQe&=`2T;|?6zdX7!ni}>@d&)mwpLPROxQoaFm?oLGZrFZe?2q*aFv*&jf8pi> zN#{mQ5;xds)_yTfvA~Rc-97xotml&MVV$f!%_dnp8(CsU01$|9(F#;7vn8XL4XsM7 znL@9pcnO=MP6_!EdqyI!J{mQ~bf1hpxM`+v!$)f3fkC*=0@Vq?YZx;;^t^WB6M{g^0M`ChckZljny@*Rcg+JZmX{*?!lL(J5$N875{y)i9D6SqFJPIx z+mr#wIzFq;h1EFEqK5F+b93z2n{ zJ75vW%sEJPp7?NOD3ePpfVFMfBL~POEAt6}lziAF(sDVyi;Kt!dX*Q!JfhP;!q1Xl z|CY>S;LGHeekkTl6p%WZ*0$yuNRs|>fGu{VqpLf8uF9gcwoO$5$0{d(yvoI&zC65g z**9cY=Lql>$>e0e?CwhY&gGWgq?J#y(|>v?BW1D+O(HGGzC(8U&@C~Ah=`{>dm;Pg zUoD&GAqQY;?`CV?cTl&cfWNtoE&M7a-`QXbzeq`m+?MU`NJ*g8w(agp^hN&oem>u2 zw12)u=OcDYwy-H}v4QT6)1B?pvM$2LEA$CWJ9TF<;oaX%Gu{3F^Pk>FE=}6HU+6o-8XXgS}(kXz)zG;8h#=AILnc%s42k^1~Fze!@&p-V|7b4_NW5`!DuK(d}`<-`2gj5!a|Fx>Q(X$YDnne z9uopK)=?EcTU}d!fIv%F!Pv_&>WYyVM%6)#MDeA{r*J@MU~LR}*h+9bqXgqT!s7jS zj0&ADuixM3$D`Px#x*h4**I4;TZLmtiA8#&N(h;%S$d5DpnX$m2Ln9VtDslYD039W z0CkEMRr+x-C??=k5|4)H?f$voWF*#yVWRhF!B|+a$aP--DQ`VuP3_BKhupQWpev>0gWZd7INGaDwnW-GDGYKEAeVxOYkKRnq$% D4UD{a delta 491 zcmbQif0UD}=S1I)z5^X%zlA4qxv~BeUc@FcF*HH7T3G$GQO*FiRcL_i?o^^DikobvNa zGV{_E{Dbwq6%=_VYqGk?_~a+1fW%5NQWd;Yi}F%)6f*M^f*gJI^z=5*WA$RJ2ie)r zqACKU_Aq?lWOyKbrUm&|5DBfVB y3JM&?62Z+p`(!~XDuJReoBtrRWI&914$=~XFiPx20Eol8PYtBY1*FRls0#pUtG4g} diff --git a/build/obj/boot/loader.bin b/build/obj/boot/loader.bin index 02ebbd014ecf745f40d4f102cbf108e83a42c596..096e80a677dc1a99d6ef20f8c99f89342a5542a8 100644 GIT binary patch literal 1944 zcmeHI-Af!-6hC9NYgV_jwzw^M>50KYUaW>jXs{%jY*|sG?pi-0)o$Fm?pECivv;u{ z4_%OglAt1`gkoq3g_cCit<=~Mg-*|%=|>)H|ABTM z&iUPQe&=`2T;|?6zdX7!ni}>@d&)mwpLPROxQoaFm?oLGZrFZe?2q*aFv*&jf8pi> zN#{mQ5;xds)_yTfvA~Rc-97xotml&MVV$f!%_dnp8(CsU01$|9(F#;7vn8XL4XsM7 znL@9pcnO=MP6_!EdqyI!J{mQ~bf1hpxM`+v!$)f3fkC*=0@Vq?YZx;;^t^WB6M{g^0M`ChckZljny@*Rcg+JZmX{*?!lL(J5$N875{y)i9D6SqFJPIx z+mr#wIzFq;h1EFEqK5F+b93z2n{ zJ75vW%sEJPp7?NOD3ePpfVFMfBL~POEAt6}lziAF(sDVyi;Kt!dX*Q!JfhP;!q1Xl z|CY>S;LGHeekkTl6p%WZ*0$yuNRs|>fGu{VqpLf8uF9gcwoO$5$0{d(yvoI&zC65g z**9cY=Lql>$>e0e?CwhY&gGWgq?J#y(|>v?BW1D+O(HGGzC(8U&@C~Ah=`{>dm;Pg zUoD&GAqQY;?`CV?cTl&cfWNtoE&M7a-`QXbzeq`m+?MU`NJ*g8w(agp^hN&oem>u2 zw12)u=OcDYwy-H}v4QT6)1B?pvM$2LEA$CWJ9TF<;oaX%Gu{3F^Pk>FE=}6HU+6o-8XXgS}(kXz)zG;8h#=AILnc%s42k^1~Fze!@&p-V|7b4_NW5`!DuK(d}`<-`2gj5!a|Fx>Q(X$YDnne z9uopK)=?EcTU}d!fIv%F!Pv_&>WYyVM%6)#MDeA{r*J@MU~LR}*h+9bqXgqT!s7jS zj0&ADuixM3$D`Px#x*h4**I4;TZLmtiA8#&N(h;%S$d5DpnX$m2Ln9VtDslYD039W z0CkEMRr+x-C??=k5|4)H?f$voWF*#yVWRhF!B|+a$aP--DQ`VuP3_BKhupQWpev>0gWZd7INGaDwnW-GDGYKEAeVxOYkKRnq$% D4UD{a delta 491 zcmbQif0UD}=S1I)z5^X%zlA4qxv~BeUc@FcF*HH7T3G$GQO*FiRcL_i?o^^DikobvNa zGV{_E{Dbwq6%=_VYqGk?_~a+1fW%5NQWd;Yi}F%)6f*M^f*gJI^z=5*WA$RJ2ie)r zqACKU_Aq?lWOyKbrUm&|5DBfVB y3JM&?62Z+p`(!~XDuJReoBtrRWI&914$=~XFiPx20Eol8PYtBY1*FRls0#pUtG4g} From ac43cde040f8d1f40b4d581ca66b3d949d410e18 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 15 Jan 2019 12:29:32 +0100 Subject: [PATCH 11/11] STUB '-' --- boot/elf/elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot/elf/elf.c b/boot/elf/elf.c index 5ce83ac..1781d7b 100644 --- a/boot/elf/elf.c +++ b/boot/elf/elf.c @@ -7,4 +7,4 @@ // Desc: ELF64 Parser and Loader // //----------------------------------------------------------------------------// - +//STUB