From 1cd839c63ae01db0a210a1813f439500de248079 Mon Sep 17 00:00:00 2001 From: d0p1 Date: Fri, 27 Dec 2024 18:18:48 +0100 Subject: [PATCH] chore: start work on new 'mm' --- Makefile | 4 +- boot/intro.txt | 2 +- boot/loader/loader.asm | 31 ++++- docs/config/Comments.txt | 90 ++++++++++++ docs/config/Menu.txt | 9 +- docs/config/Project.txt | 215 +++++++++++++++++++++++++++++ docs/img/favicon.ico | Bin 314620 -> 138283 bytes docs/img/logo.png | Bin 4396 -> 4324 bytes docs/img/logo_3d.png | Bin 29329 -> 28410 bytes kernel/Makefile | 4 +- kernel/kernel.asm | 2 +- kernel/mm/bootstrap.inc | 7 + kernel/mm/intro.txt | 2 + kernel/mm/{mm.inc => mm.old.inc} | 2 +- kernel/mm/pmm.new.inc | 7 + kernel/mm/{pmm.inc => pmm.old.inc} | 0 kernel/sys/mmu.inc | 3 + kernel/vfs.inc | 47 ++++--- releasetools/efiimage.sh | 32 +++++ releasetools/hdimage.sh | 2 +- releasetools/image.functions | 7 +- 21 files changed, 435 insertions(+), 31 deletions(-) create mode 100644 docs/config/Comments.txt create mode 100644 docs/config/Project.txt create mode 100644 kernel/mm/bootstrap.inc create mode 100644 kernel/mm/intro.txt rename kernel/mm/{mm.inc => mm.old.inc} (99%) create mode 100644 kernel/mm/pmm.new.inc rename kernel/mm/{pmm.inc => pmm.old.inc} (100%) create mode 100644 releasetools/efiimage.sh diff --git a/Makefile b/Makefile index de222bc..63890b4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,7 @@ .EXPORT_ALL_VARIABLES: +MAKEFLAGS += --no-print-directory + TOPDIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) SYSROOTDIR := $(TOPDIR)/sysroot TOOLSDIR := $(TOPDIR)/tools @@ -30,7 +32,7 @@ QEMU_COMMON = \ -serial stdio \ -monitor telnet::4545,server,nowait \ -net nic,model=ne2k_isa \ - -machine isapc + -machine isapc SUBDIRS := external tools include boot kernel modules lib bin diff --git a/boot/intro.txt b/boot/intro.txt index 48cb259..8b11f91 100644 --- a/boot/intro.txt +++ b/boot/intro.txt @@ -12,7 +12,7 @@ Section: Legacy > +------------+ +-------------+ +--------------+ > -About: Memory Map +About: Real Mode Memory Map > > 0x100000 +-----------------------+ diff --git a/boot/loader/loader.asm b/boot/loader/loader.asm index ead28b6..daeaf7a 100644 --- a/boot/loader/loader.asm +++ b/boot/loader/loader.asm @@ -214,6 +214,9 @@ szMsgErrorNotFound db "ERROR: kernel not found", 0 ; ========================================================================= ; protected mode code ; ========================================================================= + + ;; subroutine: multiboot + ;; This subroutine handle multiboot structures and convert them to multiboot: ; https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Machine-state @@ -223,7 +226,8 @@ multiboot: ; get kernel from module - + ;; subroutine: common32 + ;; This subroutine move kernel to 0x100000 and setup temporary pagging then jump to kernel code. common32: mov [0xB8000], dword 0x07690748 @@ -242,15 +246,31 @@ common32: or edx, (PTE_P or PTE_W) mov [edi], edx add edi, 4 - add esi, 4096 + add esi, PAGE_SIZE inc ecx cmp ecx, 1024 jb @b - + + ; map 4mb right after kernel (for now we assume there is enough memory) + mov edi, boot_kernel_paging_table + xor ecx, ecx +@@: + mov edx, esi + or edx, (PTE_P or PTE_W) + mov [edi], edx + add edi, 4 + add esi, PAGE_SIZE + inc ecx + cmp ecx, 1024 + jb @b + + ; add entries to page directory mov dword [boot_page_directory], boot_0_page_table + (PDE_P or PDE_W) ; present and writable mov dword [boot_page_directory + (768 * 4)], boot_0_page_table + (PDE_P or PDE_W) + mov dword [boot_page_directory + (769 * 4)], boot_kernel_paging_table + (PDE_P or PDE_W) + mov eax, boot_page_directory mov cr3, eax @@ -278,7 +298,12 @@ inode_cache rb sizeof.Inode boot_page_directory: rb 4096 + ; we asume kernel is less than 4mb boot_0_page_table: rb 4096 + ; We map 4mb after kernel for future kernel page table/directory +boot_kernel_paging_table: + rb 4096 + _end: diff --git a/docs/config/Comments.txt b/docs/config/Comments.txt new file mode 100644 index 0000000..5df0345 --- /dev/null +++ b/docs/config/Comments.txt @@ -0,0 +1,90 @@ +Format: 2.3 + +# This is the Natural Docs comments file for this project. If you change +# anything here, it will apply to THIS PROJECT ONLY. You can edit the version +# in Natural Docs' Config folder to make the changes apply to all projects, +# but it's recommended that you edit this version instead. + + +# Ignored Keywords +# ------------------------------------------------------------------------ + +# If you'd like to prevent keywords from being recognized by Natural Docs, +# you can do it like this: +# +# Ignore Keywords: +# [keyword] +# [keyword] +# ... + + +# Comment Types +# ------------------------------------------------------------------------ +# The syntax reference is after the definitions. + +Alter Comment Type: Macro + + Keywords: + equ + + +# Each Natural Docs comment has a corresponding type which determine its +# behavior. You can define your own here or override the settings of the +# existing ones. +# +# Comment Type: [name] +# Alter Comment Type: [name] +# Creates a new comment type or changes an existing one. +# +# Display Name: [name] +# Plural Display Name: [name] +# The singular and plural name of the comment type as it should appear in +# the output. +# +# Simple Identifier: [name] +# The name of the comment type using only the letters A to Z. No spaces, +# numbers, symbols, or Unicode allowed. Defaults to the comment type name +# minus any unacceptable characters. This is used to generate things like +# CSS class names. +# +# Scope: [normal|start|end|always global] +# How the comment affects scope. Defaults to normal. +# normal - The comment stays within the current scope. +# start - The comment starts a new scope for all the comments +# beneath it, like class comments. +# end - The comment resets the scope back to global for all the +# comments beneath it, like section comments. +# always global - The comment is defined as a global symbol, but does not +# change the scope for any other comments. +# +# Flags: [flag], [flag], ... +# A combination of settings that apply to the comment type. +# Code, File, or Documentation +# Whether it's used to describe a code element, a file, or is a +# standalone documentation comment. Defaults to Code. +# Variable Type +# Whether it describes a code element that can be used as a variable's +# type. +# Class Hierarchy or Database Hierarchy +# Whether it describes a code element that should be included in the +# class or database hierarchy. Requires Scope: Start. +# Enum +# Whether it describes an enum. +# +# Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... +# A list of the comment type's keywords. Each line after the heading is +# the keyword and optionally its plural form for list comments. You can +# reuse existing keywords to change their definition. When using +# "Alter Comment Type", these keywords are added to the existing ones +# rather than replacing them. +# +# [Language] Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... +# A list of keywords that only apply to the comment type when using a +# specific programming language. Each line after the heading is the +# keyword and optionally its plural form for list comments. diff --git a/docs/config/Menu.txt b/docs/config/Menu.txt index 49a410c..87f4b0f 100644 --- a/docs/config/Menu.txt +++ b/docs/config/Menu.txt @@ -20,7 +20,7 @@ Timestamp: Updated yyyy/mm/dd # These are indexes you deleted, so Natural Docs will not add them again # unless you remove them from this line. -Don't Index: Variables, Macros, Classes +Don't Index: Macros, Classes, Variables # -------------------------------------------------------------------------- @@ -139,8 +139,11 @@ Group: Kernel { Group: Memory Manager { - File: mm.inc (kernel/mm/mm.inc) - File: pmm.inc (kernel/mm/pmm.inc) + File: bootstrap.inc (kernel/mm/bootstrap.inc) + File: Introduction (kernel/mm/intro.txt) + File: mm.inc (kernel/mm/mm.old.inc) + File: pmm.inc (kernel/mm/pmm.old.inc) + File: PMMFreeRange (kernel/mm/pmm.new.inc) } # Group: Memory Manager File: lock.inc (kernel/lock.inc) diff --git a/docs/config/Project.txt b/docs/config/Project.txt new file mode 100644 index 0000000..271d86d --- /dev/null +++ b/docs/config/Project.txt @@ -0,0 +1,215 @@ +Format: 2.3 + +# This is the main file you use to configure Natural Docs for your project. + + +# Project Information +# ------------------------------------------------------------------------ + +Title: StupidOS +Subtitle: 32-bit Operating System written in x86 assembly. + +Copyright: Copyright © 2024 d0p1 + +Timestamp: Updated yyyy/mm/dd +# m - Single digit month, when possible. January is "1". +# mm - Always double digit month. January is "01". +# mon - Short month word. January is "Jan". +# month - Long month word. January is "January". +# d - Single digit day, when possible. 1 is "1". +# dd - Always double digit day. 1 is "01". +# day - Day with text extension. 1 is "1st". +# yy - Double digit year. 2022 is "22". +# yyyy - Four digit year. 2022 is "2022". +# year - Four digit year. 2022 is "2022". + + +# This is where you put general information about your project. None of these +# settings are required, though Title is recommended. +# +# Title: [text] +# The name of your project. (R) and (TM) will be converted to their +# respective symbols. +# +# Subtitle: [text] +# A subtitle for your project, if desired. +# +# Copyright: [text] +# The copyright notice for your project. (C) will be converted to the +# copyright symbol. +# +# Timestamp: [text] +# Text explaining when the documentation was generated, such as "Last +# Updated Month Day Year", if you want that to be included. The following +# substitutions are performed: +# +# m - Single digit month, when possible. January is "1". +# mm - Always double digit month. January is "01". +# mon - Short month word. January is "Jan". +# month - Long month word. January is "January". +# d - Single digit day, when possible. 1 is "1". +# dd - Always double digit day. 1 is "01". +# day - Day with text extension. 1 is "1st". +# yy - Double digit year. 2022 is "22". +# yyyy - Four digit year. 2022 is "2022". +# year - Four digit year. 2022 is "2022". +# +# Style: [style] +# A custom style to apply to the generated documentation. See +# https://naturaldocs.org/reference/styles for more information. +# +# Home Page: [file] +# A custom home page for the generated documentation. It could be a +# documented file in one of the source folders or a HTML file in any +# location. +# +# Encoding: [name or code page number] +# Encoding: [name or code page number] *.[extension] +# The character encoding source files use if it is something other than +# Unicode. It can be specified as a name such as "iso-8859-1" or a code +# page number such as "28591". You can see the list of encodings your +# system supports by running Natural Docs with the --list-encodings command +# line option. +# +# Natural Docs defaults to Unicode which will handle all forms of UTF-8, +# UTF-16, and UTF-32. You can set a new default for all files or you can +# limit it to an extension such as "*.txt". You can use multiple Encoding +# lines to cover all the extensions that need them. +# +# You can also set encodings for specific folders by adding Encoding lines +# in Source Folder sections. + + +# Source Code +# ------------------------------------------------------------------------ + +Source Folder: ..\.. + Name: StupidOS + + +# This is where you tell Natural Docs which folders it should scan for source +# files. If you add any on the command line this section is ignored except +# for the properties of the ones from the command line. +# +# Source Folder: [folder] +# Specifies a folder which will be searched for source files. The path is +# relative to the project configuration folder, which lets this file remain +# portable across computers and not cause problems in version control +# systems. You can enter an absolute path and it will be converted +# automatically. +# +# Additional properties can be added after each source folder: +# +# Name: [name] +# How this source folder will appear in the menu if you have more than +# one. +# +# Encoding: [name or code page number] +# Encoding: [name or code page number] *.[extension] +# Encoding: [name or code page number] [folder] +# Encoding: [name or code page number] [folder]\*.[extension] +# The character encoding source files use if it's something other than +# Unicode. It can be specified as a name such as "iso-8859-1" or a code +# page number such as "28591". You can see the list of encodings your +# system supports by running Natural Docs with the --list-encodings +# command line option. +# +# Natural Docs defaults to Unicode which will handle all forms of UTF-8, +# UTF-16, and UTF-32. You can set a new default for all files in this +# folder, limit it to an extension such as "*.txt", limit it to a +# subfolder, or limit it to extensions in a subfolder. You can use +# multiple Encoding lines to cover all the subfolders and extensions +# that need them. + + +# Source Filtering +# ------------------------------------------------------------------------ + +Ignore Source Folder: ..\..\sysroot + + +# If there are any subfolders in the source code that you would like Natural +# Docs to ignore they can be added here. If you use any of these options on +# the command line this section is ignored. +# +# Ignore Source Folder: [folder] +# Tells Natural Docs to skip this folder when scanning files. +# +# Ignore Source Folder Pattern: [pattern] +# Tells Natural Docs to skip all folder names which match this pattern when +# scanning files. ? matches a single character, * matches zero or more +# characters. It applies to the entire folder name, so "cli" will not +# match "client", although "cli*" will. +# +# The data folders of common version control systems (.git, .svn, .cvs, .hg) +# are ignored automatically. You don't have to add them here. + + +# Images +# ------------------------------------------------------------------------ + +Image Folder: ..\img + + +# This is where you tell Natural Docs which folders it should look for images +# in. When you put something like (see diagram.jpg) in a comment Natural Docs +# will look for it relative to the source file it appears in plus any folders +# added here. If you add any on the command line this section is ignored. +# +# Image Folder: [folder] +# Specifies a folder which will be searched for image files. The path is +# relative to the project configuration folder, which lets this file remain +# portable across computers and not cause problems in version control +# systems. You can enter absolute paths and they will be converted +# automatically. + + + +# Generated Documentation +# ------------------------------------------------------------------------ + +HTML Output Folder: ..\html + + +# This is where you tell Natural Docs what kind of documentation you want +# built and where it should be put. If you use any of these options on the +# command line this section is ignored except for the properties of the ones +# from the command line. +# +# HTML Output Folder: [folder] +# Generates HTML documentation in the specified folder. The path is +# relative to the project configuration folder, which lets this file remain +# portable across computers and not cause problems in version control +# systems. You can enter an absolute path and it will be converted +# automatically. +# +# Additional properties can be added after each output folder: +# +# Title: [text] +# Subtitle: [text] +# Copyright: [text] +# Timestamp: [text] +# Style: [style] +# Home Page: [file] +# These properties can be overridden for just this output folder, which +# allows you to have multiple output folders with different styles or +# titles. See the Project Information section for descriptions of them. + + +# Global Settings +# ------------------------------------------------------------------------ + +# Other settings that apply to your entire project. Settings specified on the +# command line override the settings here. +# +# Tab Width: [width] +# The number of spaces tabs should be expanded to. +# +# Documented Only: [yes|no] +# Whether only documented code elements should appear in the output. +# Defaults to no. +# +# Auto Group: [yes|no] +# Whether groups should automatically apply to you code. Defaults to yes. + + diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico index bcf84482125e37d335afc3a18a18e7fb6d7c2f0f..5df6435b6a2049cbabaf90d04fb6ad390ab07fea 100644 GIT binary patch literal 138283 zcmeFa1yok)_Beca>F)0C5TvBxRiqJVkdOvRN$FHjq(Kn{q`L*_5D`&AxA41ffP2mwGkcwb-t^_dBLm;&GV z_?$iy0ZeZI0QDmP7#Mv0p2-FPJlQaSxcD#a2>@WY4+h}k`sF(Y0Kk5R0hpM6c}4|* zoC6quit3kVBmlUM2my$QzCOP}0DuEb2!Mt4_1PRA0GbFOK(Ml+G&%~&DWK>wSD`AW zU%#{f+XK1|nWg|h1;{`pR9zE3KXvoKyS!hKxPXi-1tCJZdWA+B2o}eJqe-%XgF^dZ zui@F^tr&@@A7=X?R^(J=<}7|J$`Nzy*HKl!hK+p##^2Q*31t#XJ{;~Q6&)P+jXJTn z?T!qO6K-$GizH$?n%=3bs>~iMAG@=d$5K>s&r+De_o*KwSZsTIZllO)%xn4KFuiw0 zS>H@NQB$FJW=^B|N5mV)Yj?X=l`gJbok_l$A&!et3hC^TQBzC3o`j634P(AAt?c&8 z{VPE|PLI+7m(tAjg=}n0I_M>s_}Hm6B;*Oj=v1fZiYO|2;&uUi?F=Hi@(VIHuz5HW zA5rP@w2A2|iln6=5E*W#rlgTv0G;{vZHo z$d_EAb$QgnCnH8~$Gz%?$B@HKbqX(42;#G@e+m~gOvl{i0^0;|!C=*m>dB6~q$4MN z&~xj2m8z4IdL)>j&D}44wd`A zG7fGtsnZ@+;&ZrIkUvh$*ET*%VvgQg=c$g;RQV?7ct;jv`R<3B$i^GW6*sue9#Xs9 z;vKAPp2$d4@M8Bp%rj5J3Vc-qxrZQ3L4AG1??FDpREtdUJ~7(d;&W+J{Q0L1qZGOv zCHp(h4c57Zi2mXzDNZ_D1#%ih7l~dQecY0~oFy~KF%X$ppCFj7Ti0$ZCwgn#P+6V2 zEDa0Z93G2$Bv^$)jBMYu;b}LWKZ4AiodCu8*g{s{@&JwmzcJkVm`x57i6@u{ zn`-PSSfZ1wcdWK+jL4Z|O1iiv-aPAMFA0fiX*$NyEP?s-?!xrC2?J@Lr3sd0DFg`y zT!I6W1}V(F0MRu6OB!*VEm5mF1LK2l?@y}|i9&+HxL)o%q@hvVL3(+MIajBk3OQMv z)rV?w4QY^F%5Dvw!KkG^JXxkxDF-gP^We$W8q=n4;cQ@xlBfxgra@P<&?cKc8g#gH z+uwTFe@Z-e0Cm}!z2<&N7fKTLG@5U<+QOVtqP!Fak@U5R&+i64!Cx7P*#S zf7NiNEN17ZBzYXDn4pO&Cm>1?zW``BT$^7gk8OkfYxzgIz)Je?XbT@Su2gEKvArzCk2R56fcbc z$%SlIpW52FV?MqU%dd~>wRtlpROHRvLm`94#|%4Tp$TAu<;A*jB#PpyU`uy4)aj<%@>-&^5;A)%B;s>Ug)ULur)d1elurN7HB$pYlR#I3(nm0oKgfeB#LDCdZrt z3sGk)gAak0&$|XQNV!)Q2NrN%Jur9tybu}H9`VleZBJtXGD<8?I8G3T|4XH;yzWY8 zr{;H+?=Kj_Y_?vU4&}e|a$cMFMS+5sLSdl`a;0M+qM1}&{@9~6Q~^C0V@z>TyE?6$ zx`Hk^+#H)S8`Sb~jM1w23l~)9%;D`mUZtk=)a15I*v|#~GZh`cw?9F%AXg@?tlP3ku9$ zE0cFi?d~NbqvxXt3ul~>-Fu@CO6IE^=gdA3401TmX-?Qs~HVWf8fP*ghv&?zeP1Gg+E`=Pk8ICCHH zk1vwq=w`QHqBdY!!1qzwO(XD9=()-4t2m#X?`Ic)bI%gq;PFxAOuqn(H@)&qsFxg7 zHh#U#%SbH{T8zegIMY!~e8lI&5B=G1c?=;2!_$Ba+9H4Aq2fg?nsw=!>3z`_pz|d z5jkdF-H8xNGKx^=o-1@VVuhSh$&XVbh#!vc7Rto#GBTaDPlpT|FHvH~j8L8kUn<0u-H|k*uh2y%>&p+B?%91q>+VsH&M*6r^5LP! zWmi5j*dr2cnc#ZdZOSX z!p0ef=-3UpM&;yVgDiF7Mnl7njb#14lb_kM$m;UWq+A-i^8Tkxf@>~zqg!0Y=I;+) zk@UHf4lv@T z>cg;B*AS6~_gs&Tj$SLPFg)@qSf@t9CXE@s*jtsmkCQ$=>@iuMDZu2qZXYvC^RZ-J z%3nm>d_gtp-E#6GN`O3@bZF%C!%*w)@fknsz17YpHTL`gg1|bY<8?y+4%&Vd5HaRFueVPKRJ#?y4vVDogR==Be6^wuLq zS^^VK`u3Je5El6n%6&xj8TL9@V|qL6S=5J4He~4&IZLddPf1f%njD zekO7WCbjZQ<#$s$Q;z7l#ugVwn*>eIK9IJan*WwnoYk?d0Nkq}*vJ(?|fkc73i@dEDnz}dXJc1}u-;HbptI<{s=Y5z4l(7~xYQh4Lt&I3K* z)2mFCS`qcD)rw3BlTFe{WVz%L5RDO9=dFw{u5R19hub?|w6Ir>GX3-!?jAD(9+`^ygi(z(mAHgm-g`(7!1ZJ&@RBVgz8->QlZAYvANzX6lhTX!(Ph)vMN#`9Ub4@~%lGvFI(J@TV zZogupr-9(U)iyBwc=nYIR}eXM(gfjd8C`Y9=ryLnGE(VH`#_%?Rci4~tp)Viw-Umo z*&B)>?ZSwcQt#*_w6d!MDYvO}^gTc{#jGv%QWMjQGhQ_-i3w$xo@|yFD9IRLIx>L* zyK5l_&Wg>(3OW*zHMEtkIU@V-lP@>^;MKr;s0Kp7DBWtXQrlT&i*KX^TbK(Y zV_}a|7pq=uTNn3H#LxfWM)YTXW@g^3Y!%sLdKB?z+Bv=0BPZnpD^!dI zsUIq<=$vVlk1ig~Q_4y8jNg)hY!@yOAV9X37>IdTytKW2-uf51=o{-f z+dk&e=4UokvT!{(A#mRzR;76GCZ*}23H$@%G~=Sd9gF2aT50kA<@a9sMi*FVd3x+u zlX$LZ$>XxHK3R#j>?)yE<%>wQa-qNfK1~ay{wdSUz=a}_8GbB19&UnqYBNP7G}Z`~ zCsz#xVOt(154HvIvbOA-G=MRqy~(i-QE)_;YaUHmggehYRc%@|zKF(hKRcYG;&`{P zPr4VmH3W%1M)YCF$HYCFLo=}=V#$l3QZd1`7|KxN<}P>Z=X)uemVVXkBl5zEE6+(3 zPO`OwF~nggO@Q{T0#Z!h)lNRGa6IZ6TxK?6;WfCq{*3ui9|l&R+9N~p@!fTBeuPw~ z2M_SlokQLjJ-M9vA-?b0E0d?uDy_!j$L}j@vj`s$SzNSeP1ck|noFP{F3E7e0;L#c zqlxKjpHHXFO;ry6Akk`i-QolO(LR+lS{P5&c$nU3(}}#xbH@bu2}LyTPD#4A4Dm!4 zMs7LqC&{2BDN&{j9foOq;OWV)oup$&=N3kO_{N12TgA`=uWUEV#^Ei4kOLyoT1x5sY0dkCj=k8&vq9t;KGX0yoHVKi} zsm(OI^DRnGT@bQMY}6c|j{2qVw%cuXO?rNsfN9sp>lxKf6HFlUEMs8POusZJ`%n%sFTEMCcm#Fh+=6AO^Tt{#~TX1&x>8jDDC^`t2b!^gCQfTIg&YHK5(C-P5F+aKluO<_^G-u^4c ziY?k{JNu+PRq+0~W06(IN;96-xsVaO)PT))S!dGc4f>8Nh97MxqaB;c`mQ_@ac{~M zlL*Q%!S@i4HSUA891&Azd6D)8bkK7V;b4okW2K2HT64v+gu~)y=AQUh)kKa4nR6Xf zI`?DL2Z6C?n9to~mUxkiuJYcGHkeLbQ;j0_%a41NxM#0z<-boh<8PJn#z&(}X8#am z_cD5k4_Z@qnnhT^hjlhbD$*8UrsmgJ@9DNvv6-^UFeH)}xX$g84@T}A2S>hzhcHJa zhReFG0X+0qaP>A*$JhDz`}fB=j z^}L|ZI+Nn`r3&ilgGDW}LB?$rxjoy$EW@zlxq&hIBufL9#kOLlihd84x#&oX!>-{A zj;%8h9j@~v@XM?Y77q;vY4upaI4(0;jC1TF-#1z66W1mr^32|!EwhfDa$vqME~}qI zsf0g#N25T4{ic0muw7$tx;{l#O0@Rw6S)It*`UP~J^0QUq^t56mhm4U?w89F)SNtL zPduv)Yuu&Wro9!r1#qIMKik1gfVI; z>$nVNp$y;_ju@O#OX-5U8?FVIqem zwGqi}(z*m5mtsUtzwqrK1x`E^JqsTK%XGY^c~Ts_BxW>ek%lfR6XS48kW@OUCw$3Q zW3Qwj6Iu^3X<p^NH|j zwU&>>k&0vpy@JaSiIePP^~m|jP;s6b>D8+~0dTN!T(GP@sjv2>ka$T#dCa@D*E`9! z%594iQl+)81jOCl>st+% zAf=XRY5FO_@C#8hKB9n2q#lYq_=KZt8XD*YprFvGwg4wk~2B948Q3jmRVeU})fD@z!NNwF(!Y@QszLxdWheUx*c?O-W4W@(a zQtH>oL^ecK01@-`>oG?X1!1Fj*;rWY0Z1n)#OmS&iDuvW_M?Cn3Ydb6nc3V~*?u`3 zajIlKH<}IQlR-)n&mh84D1BZLp^#{#w1LmGUQBe!mza^jby*D0P)g|vxcAoIZo9vR+3Z zNhrfUGp7c)4tF5F2IF2Ll;SD&ERsyb`5lp%Bk%)=&F-a}Ru>i1UBe7cYU^iVbpS;8 znY1E7;(D=q8ARb`$~6^4FZNhfGPIHKe$v&t8metR#Io(jVuhGqLumMjJ+qo%(soGG zDe0q6HZ0B?il44;E08 zgE83*6Av)`#}m^Q8jm9fa$)H&%f=q{!}=hAdt)drzWhOsJ{Bx3Z}_byk9Lw>%O|EV z>G9Jd6dyB;s75!oP|Ak5ppJP{_T5r;qK(Z33J6~i_N=tzXuvET5@Yo71Wa6HL$C9I z?>%}>Tjg8j35S~&jI_L+y(G~a*m0b3{E(h?V#15*IL%8;ucn~NsyxZjR=FF`{_S>s z2IWENN12y6ajY*c)}?#NX&I+xBUk0!56+e znPJ5NHP@Zbn@#jB)d@#rnFHTC~P1MI&X^OydgC z1-*8jFoX_4vWw8Q9rix6mRTW7Kr zeX?mgYLrWs1tLOJzVs^rSJG>LFx4)Ohuk+P`NPp<)oOv6N5P$W6NDDD4|(3zMp`f} zXev&PAN4zkJa+T5g%oos-@;@Xms68?)ac6@$a&S1zj}@%XN3yG8r$TFDXtax!Rs_- zgI*~`Iuk^OoqPHi*mN21!yEUMhY zL?mgzixsYc3c-CcUv+9thLcaBc01&D{iBx8!!2EZOlh}c7l!eRQ zf)bd=x#5yiS>|S>Fl$iC452odGNmsGO};i(Q;gCY-wWEPE_(4;zOk3EpX$&#Yt0L- z-9H!B7IOz<4Q-xsG=G4y6M_z5<;SFnUVg(pl-9JkhJccZRa#Z@2eDUGtTb=Gx1=vY z|GfQq4e3?;^Vg$?Z<*g@B%+4_@G9KSsHxSG7E?Q8cXtTxS>CSW0C!LH+*(t0(ibQ# z=##Qg<$PYuH0?z#+Q_rr+4AXb4^MDr*<3=m9;vNK`F*KpLrKuy-Czw+{t*oXH zSZG}}JUZ!EDNj!yjV{>0(PiIpy z%D@I|^inJgBmd?C3~oo1t{nxN4#Ugk^!PgWc@rWq4M~}t2PjzQ_IaB;%Vs?uxpUum z`s!{+TjZYYKFOm4(?dvL}^gvg)LA zDfr^Y>aUg_tF2G3CF4_2M{Av|TQOYZdhj@&M$i-~fm@x+`2pww^=vWDFkCP;pwFq@ zxSBgeU*1NSeQW&@BNqTjc28>oEMFW;A;>DeRe0{H zP0v3LnN4KWD%D(_q-ibBvD8imb9|B91J&T*U(xBIcccp6AsC97zK2DdRY}G2e=t_iMBB$n|y*2Vv0hvzGyy77T;X|Z~Y3|ln zGH)@rw)$7!YeXI@tZpa{l=ml9tEegoDJev3E<^wU&TXHM=w+`wkxY5&1AuYk$=*pc zF}Z9U~lOx(4=HukHFR2EOr$glT0DE1-w@aC^@b~X!5evpG7&(GWQEJthb zKDPc)Qof90?vcI$%G>1SGIH;h&AVjOM^r{2dHMqrayJ^BEuL`pEKy7;lfA!TAIB(K|a>nKm`ZG1NC3Izn?EQ>a z9hFJheJhg9>-Y%tCR-gRI~lF5TD9-c=7%h{A8egy^sg*5hAdq2tTujAKNPsXufuUH zH2$)r=3+yGWy6V(elN0j5L$GCs2(4Y$b$Y|Nbjg}UsVXRiQPLEFWjQGaA{UdJwCOEBTe?nP%RX2n2r}fFL3!@=@zEBA6(7@J z=~Nwocu61Zs@Z555+hskEw{@`#HcBX+1Bv4II#}rI||L>ZZo)<`}xy%f}8e<$GSU1 zdnt;M3EX`9DbjhRo}iU`qEK5ah^+|f{C5BSiY4ZQ)VBhMZ?~>m}|D8!~LF5JS0Zz z+-xYS*Fsiy;s;){O!4boGtnoE;;hGBysZ7{B%6~}i;!x6WnIpS;>eYlMJ>KC-37AQDQA>LN=OF9vzu2jPUY<+U7$WE}0>=c5>T&0$jVb zu-VyO;l4`g+myApUWN!ge8Jp!tO*ZBpf*+bBf(`c;%hc#`)#k$?<99>Hj}K3S4iaH zsOh#m6kLY3T9-@qFRNYqyjxOYloQ$f>BEx72$)xO4c;F{hS1W3nd*}EZ1=W}EmC+F zC4MHB9$Bis!hpI=tmS7ms!DTfv$-X@U^e{Oe9e}j7SH`SCaqf>@6`c#comO|H%YgY zHmzjaP|T--p4e>m4dMg49*>Rp(IhPFBWdNu6`C~J-3BQhiAt^R6<4;2f{3M))|A>y z?-V8mZYff7a0AdJ`{Se*n1Q`*E6uesp8a-p?<^e#`6}AvJN!i61l5R`$61lE2b*tv zx{KiU>P1}*Ua$;TUbRO}AB~uJv_+HKC&sDNYT!9_C=mu*xM5VwOi(-ZK)xg#=So=4 z$B-O|-1dD=R8ui?bNUH`rADy>34cO;j9U!)_A#w<_G%BgjvD$O)l@0B8r)y*{qV}8 z8n3V5_CtIFwFiqCjgPu~H9!}e^Rkc7vZ@II zlFRey7Z!dOQl6G61@zk0lqDU*%RO=IFc?Wq5)TPPmG>IT6&0eE`pj??NGO+I`Qmt- z^HAKb$*Gn&pi&Nte1PziW)+D|g<_1Fr>;{T%k6`$u7_& z(UIrkRh0$Hjc0ku%cdHcqc+JauhJuCqS6YUl0Dz8hJkw^a3`hNZnVsACTAh;{(a8y z5!a~O30?%fw~5BK;kkKD6Y7#T6tr=2sjr-1?2X*EoVQ~%$se_MoE_yldAiSfEn_?K ziA^9X$A=u0%OMMa!kG1KCqXTgzRy4Gw^=tnjuh)q&)F8pdY4;zTuPiS@4H1xS~smB zHR~S_zsQfG=O%UZIr?2-JS{AbS^cj4mJZ}{njfNBlm8Ae-b#;`uied+6~Yx&lhui( zpg`|Kf!24#0&k~m4b!$__>qWSk1V+(ZkU3SQY|uW(2dznj9pmh#|maz5>5LlX#q=y z!P}fy^W!ZGZ@yfiP`qQ7VMsWF-!_?@h0sw$wV2RrX7+v+FvqA~p% z`g!ZM)UU&$-nk7prmp%IDAw*rPH)VVr5xAlYHbWmAC%MC`#!1@|6KU-A}e621Ho;- zRS}85Lh$a6vfb7ef|bU>@>Hoy*p;Qc@zQr2nt%xO_fUiqb}`4WxPX3C~SO7kH*d2Q*|RAjp`_|8Qpwbn8k zwidYilYQr)si6{IT%QNB)z+tl&>!KKI26c--xNUJDMTn7}$XKm*^uHpmr z;MT5^NL~V-B5zBQ>E+Q1nB|(fW%{&5+9NwKduGt+<|pcDqN@XU%zpeSRCaZiGwE7- z?b9d+`knSwg(Z6jFYOzzIW-!2HJUWWdzKD_6kz~eLHNB_Mgm?sHtuQc!>~%Cs3&(` zC*?l3@GJ#m(~M^~?b_WK24OvKz#j12#6GCf@~hhya-CJ!U1>~5^#Zr6o7EWlmDFHF zi>MC!E+Kr~h_-IgFT@v*;zP9Npk#Ac`;eoT|7c;P5k`NAeRkq=c~jCc0;Y&=Zz_kx zBqz(gxx78Q#uYf+c87?lDbQ~;k=KUrtI}-m1ovIn*Q?)o54W9&T30JID}tMAr9!$7 zD9qG_ZlN~~x|#BFaMolSBUFc0+HA{L9Edt?wul{%Cl+b~KnteE4d3Iz_GJ{!fjnPu zPj?rWW6W!K*!*q`c@x(g(IMkaX20u->N;`d_Bpo|)eyE1VR#eD+-TYK(C&+3y^uc#-sU~YfStZFTS*bC2reWAHVM_>D z1~+an$HjR)-_a{s;ys6N74HKv++suqu9ZC&y*n@6Vro+5S6fwfjkDsN2E4JRr|UbD z?Nm9<$GgmArQ2v?B{MI&)hJhzdJVwodu6HT-8cxnW%pe1bUT1SKgrppSo=t`kcK^X z$8}!Kb;lDHX*^Tw4ZBaqY$a%mS2iY}R0P_hgIj@ZK8j+bufS z=R)(p#+Vg)>F!JqTEWA#J5vr>tqT0Qn1OWxE(LkvEI#WfyGH`M)ODs<8}}wvME5F6 zU;`kAD+lUJfl8vj8PELG#^K9#M}s3b9q0OBA19IrL(AelGhx7iv^Ae0$|F|*e z!wkWQ9h+9CR04^dG81+C9ELNNf3zjTFa&aoo(y0nD0w1g$2K<-l+S<*DJNSuaS@Oe0@CIYJT z7ciJ5#x)R3W>y#V{3B_Y#@LyM*qQe)D_2UZsAGE=mfx257Vzdy5T&@}m~XM%B1`TY zkDcBjoM!wyNt}8 z2yAT9iE3$s;n?K;nPls0u-IsIP&s=>*@vVsvx+`Z4pHWb>cP=P7R$p$(gz~j6%D0A zF{>wwgX!Zr$@a(hnqfRji8$(Vm!GCMX2T)dd36%!(}+I#X0t=(mP!t3 zE?=z#Oxz7NHFw?2nr;C1`D9eU3cgmisNPvuWyo<4zG&6$y9=ydYw)>x=)*1-J=d>Q z6t=LCxsaiW5s@yZ zH?z8MX9$=NV|?*V;_C4Gyg436ehV6hGprLBD8F&T^L3?1@69^SFXY?G1~_pm_9DPAx+#(3me*S$F>Sc zbM{Mq3YLSKT%jC5tO_w`bB;=U(YVbX$v$kTL5=tM!hp_AhY5oXX=2b~_XUT4z`$66 zd)l2W9fWe}QgM|`7~0$jvUd5FIxCC!#@I2(+P%>!?{PNJY=~y)--Z(y2!O)iEt}Um zmAE~jHXSp1D;OrJE=JrhTi>Sux$?j-{ILhsb-@F*;e~^5uuC*Xdxf=1U9DUjW z+S|AECMJ;~vi{lG@dQ$me!fDjbo7_QKV0do&69buZKvrjVd*Y&;2i$wR@qYVl{>k! zL*2wHCJ3UF`gMw28x*^@9^;{-w*@{4XYvto*G_+_?rnR|J>7kV*8AGS3wdys9}BP! zJIZWwj-6!hj`f-?LG(3T8ur0@R~~jNVOr&W`8Xv7kWFJTcjV*PbOVTvs)p*U<^{au zI_^SYmN>2VMAp?SU)|`gacFN^!==T#^>H)|hk429$VK5U|14|C$&^yVRMy_`{{HTy z03}XDb|zZ8wU`!5g;`JtOKEIypZRlQx!wCHlh241^!d3*piWOLiGnnDeGT@}l4E=r z7K%_$Hi`WLDWNTz-kt%esNoYTs6KG8OH#=Klz*VNscMeid9Nab(cA_{qu^+O*?sIl|E?O5fFoOH zH6=MwpOX3-@Ki_=EIg8JlgfZQU6Wy(3p4NB=~7;UNke4J?MvHh2Q1Y)C71fvOYUt7 zctbw|m)w$WSkBSgZ}3TtINXglG)c6{>I#6kle>SWub9DD!1rRr!eO?a3L5j2w4WV1 zWpz-#j`uZq1+TQAm`nQ3ED052o<66!Y>}94?JUw5%lV0HBOPut4J`}nw>+>$=Af84<^K0@mi&p?1YjK>D=;qil2W*@U>n+`K&lAq8BMtG&z zFJ{O1q|@&T9Z*z{Q>|Db8*Xk2abo}zk0d%vp0s|lPL8Vu1vLm`s=QE6rX6cKue|=% zM%iuUZsDb)BYr(!FyT_ImX7oS;M?*jM1Bmxf?S!Ana-0uEhXMx zQOK|JU2ytTM$>sQz>{_3xn!9|OSL!Y;Uh{?hB`6oQ6jKH%Jpcg69W;VYo`ZMR-3A# z+)x0I8N4*D(Z01=F*!ui*%MY{ldGAZ;K^ExB|Z@-Oe6A;GR7VNtHY9Qz2E2%SDKN< z%+Kszb4n~Ry-6;FQZp{$*KXY>fAT8vJy`z6x#304+6p5ouid$mbfOjYZMXA z>J!yce{V8!hShI8aKR-yt~H8eXZSEr_6a6fY9FH!FaHd$s;b=*Jjx_hO-O`baS;nv(E?~h~#BYQtn3#lDmCi0_!4)xK%wfV#E&(I2YCQ8@rVn z80B{Jdc!yyp927Re8Y9KYhq?4HJEGmg6;if`z5OB>HBD4+2TTkpFq9MG9i8=DkpLE zrfrGL;^tk_me(-5w}-76#yzbHr=wzLowmCecHW!2oh*Sgpa_dj~GEw--_frt7r4`G|QG!ThBjUv8dz02OnC9JtM& zbzR|gBJtS8{5RJl0#?|4co>lwo|%9peWSeht}Lb3M$4{_yADr0-HTMvNlK#PYjX9M zfa3XFw#ldCC*-pYP>Q`XSc|{?*=5p(y>*U(NDyb=OxnhwZiaHzHGJhAVS;ne^ayfi zN}M`emrvb-foNQQB+r9iRz&=SEabH)zQC_Clk*#WJl};i^gFQ;vb0NzkcACKkBIt zV{X!kv*c!mKJ$411w3}sxMTR07Ok4qM973x-Wp-@R`;!{M!UT9{2GiUjM z7Wd03GpkP8l90{z37ZwPvxKsy{>3QzN$peK*ZVc4 zh2-K;#!d>Rd&YB8E=x`Ah7!+)Ii3iSv|CY%M@ND(rpZFq1<&mcZpk8O)$~-t6H}Ov zW8g$tu^`-6X1-T>WvE6^pn}qQMJCBk1OIYhp;uG`cxFncoak_~1T2zVdpU50tJ5B^ z4;htIe&i}FnVx?2k~0oiG9n|S3myPWb%rPr3a}}J_ep%HaN9Bs6Em(49#y8G zJR#-O<|PbqTyBq|&+5&Y1T3fL9qG!|{1PM4TCJ0uLL?UZI@8NujcP|eLi&2zQTs@J z|892DTPwS{@YV)@(7r2siQ7#8WK2AR`WPk$ll5LqIpL~gcs}#xkAh-ixlDr6ul;(| zQJU30nOakq`-KQ(UKDnaahjwpt(jHz;7!-;Ez z3Q$ou)Gtg)lY(WXv7R>E>#k0>*x=zKSu^SzF&)Xo<=U;_u@Ebu1`Q$AK35Sati*yC ztre+z?12-?*tY0G;W{V-cq|r>xvU7ymo)GL&)x#{;D0{gnc34rzJGMVz(W97L^$w- zFDd}R08j2>;{pI4Apj78r+Udq0f3ScfY49_0396w!vIdf!U_N!oB+%PZUDH*2SE4* z0YFd~I6XxS5f=r3%TfU3>Jf4WU55qvaNr`g5}X2K%pfV0%$+ zI=ugL6tJkd#eNj_-*6D)rpEePEC2U8BNDR-OZ_Ro{|f3K{X(UL*@zMU9u$AIHyRa> z#NPt`D^gGi9;*KXX~v`%{ClMTZAqX~g7lbwm5P6@9~Ps~U*-DW;Qs9n3Ke4fFA4$% z{ZEDd6b}#sdW^qD%OCB9LM`|+Y5(ggK%s)vC_f6zkGF>-zWB5F{#VF<{e?HO zh<>OCHrvn8Iln^upTAHEHk=;<=LZ`jQVabAjrpHYfBOs-qWi(M`ArU>yo5hO+Oylj zQHuN*!3U*4gz{%w87VrGJ22e>R|o&K4M)zYhD~{N?;vLV)|2=l5+w1$Bjt; zyL$6C+JC)+ijw{@Z0Gnw@_!5dsUi3~D?t3Wmc%ph5l<&_8~L{Al)0lJXqN{@W&mKcM)blDrg%e+=yRzaUcZ{(w&o z75TA%<_BaKD#c3*{txH>{emE%;S!Qj)6p|B($i6s5#gdC{BC*RNqNtoN%}DvhG#ps z>_P=85dIBz2r?c8Gq)h9@BY{A1ehm#}ga4L4{`{Weyvz?3 zWBmGe2!25U5s#i*_`A016cb5dZhHKG<1`dTvGY<&lH$){{^l$0x!neCyl-faNXRVs z=NovZI0!Nmev1Mg_peIej9;kGdCeH&IW<32jP^Iihu|=t0)GY&;OA2m7;%1MBzW3$ zE&-JDoS8Z5^KlQ9_c!9h5p#*32l%h(L80PY#9+zWFBjf94ZS4wH$3vkw>anX+9cVK ze+2-6>_>Fr7aTyHOZG3hM`Ak{#h^mxN$$d(OZPyPH`38>(& ztdGikF3SBI+`m0Q#hJms&GO~KJC7-VUOaP$hWfYB|L_jV5B{Z>(+fg;o>~8J9Pk5F zkoXr>gvEaj!bzPa!WicO2+9YR$(~+F%zu9~1}ee)OK~m+-`NO21Hq5u^k|H?yHXD>cf=uh{F z8P6m?RQRjt!ZH3;wex#ippuMVH7VZNjti9WPZr=Df|H<};YUEZzf(7Q=BiPE zBg36DwEqL}&VCK$JoO|f&S)rx_j?JT`;JyQP1^i26qNTgT>U4R|La6wL;&GmM&KI= zzQGAf_dEE%$3DW`+`NLPHQ8WSN$@BffPJ=q_024Q=@u%C4NgRM>PCQ>7BN9yZtmaf zmG3YRuITTklOO~ju!tDMU$RoCKYCfbjQrN%VKQ zEUMp+B|!=Y_r)_A9{JcDDwD_l#Kh61_r53*F`FC!=C^|&K(^bHyVdLTD|BgceW&aNWK>M!BI+Y%% zqyYWbfbkr$<==t(UwywGWCbwj1-@j0ze89s?EjCF>F@B^Z{tCQ=|S=%eHX=lwfcEC zP(jd$0^YeZl_)vDd^ZMwL-&FR|oSP}miRfR)=-d-P zzX{^cr9S^UO#evFZxiWfWv>1a0RHBn-)6DSr~d!ugg?1El=EK(4B^bg?N6TjXAB4B z`BxI?oaXCi%=+`j_{M;p?LGgzX@A;C-+0j94}O2zO#jS4--N&zLjTMZ|F6Ao3ym#1 z&)m9SkM1f-N0(AnsdOZjq$3@jBbAQSRqghvVG?ZUhki&f*nxx)JeZk42ApBAGz0cS z0yFl*j6Flsgf_+j6O0KV1Z*M*7@GuaY?7hD7h&kQ)7=k#%!A39?_d8~Yp=cbrS`79 ztE4(d3u)Kd|6c3AeCvMMYqyu{nO@3{+5Ks+I*GZv9iXN&|A~2bB7(aL(Czwnd;aP6 z^4sn8XScUs-QIub_WoO=%lprbZXdsN`}i^b_`MSygLpE`@q66)lX#pv6Uv-Fi93H4 zsF_$K3w#nuY%!YVY0h7z=m0%??d;LsA-4W&#<4tD-96lUbe1%l!Q1UVHySA#uqVrS zsik*l@louFC(_}yM~g#M={p#R7Cd|yFio@3}w7#{MoL@YA0ytiz_6|=Uu;RsR#Y4dWk_< zF%f5b&9ig4eO<+J=3-|&*BE2=M@%C&TfcT=YTvV6_40?-r1}11EJBraaOvrZmu^}x zdA!B9(P*-Nz!O*Ayo!UqEjJ!x9qN4CiiFJq$rHfdKM=KlBS?85@W`8ug;qOFo3Up* zKJ}g6$#%^budsyXcWX_}wlFj%59KU+;&rY1q+btb_-PYOo;{Us zyLci`25eEXH1^*5_AfQoy#bouJ$s^>P*anhW)1nXhrU9O`2BHq40u%X?H>!+zvqcy z-#n|BdTW2Pdf?fH4r+QTO_I%)?%%(cv=wjW;QYb${(o5$BTiLcN^_u7MI}pjYK9 zgch75OVZ$Tzo z1-ME5-IWX3c=1o7ZqyCtA9Lm1G@$wWJ4PP5!SWmS{?2fmSC_R3H&%a!zCV?y1m9r$ zWo(==vrnUupw)iKiG&fev%pJ#`;Uxn8FswBiZ zKZMIb=jRV&oFCGNb$*L1#GRhMjd6ZUBi{KrY(R(S&tsjR(};O~k+7hn>lg9PFTy}9 z$zU|q`q6Nr^`n^QM>XP}-z8E&tlu4UV*M`m`CX0p=ckbgEiQy6jrQ!^_s*%RGkw3Y z�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 WVgmLOqdoe!ouX413QKV)?*9kUyH*1L literal 314620 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

Z1mZP$>o4cLPxcC@A{PJaL22 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 Nhr8UR@km43{|CFCF&6*; diff --git a/docs/img/logo.png b/docs/img/logo.png index a8df1cba2c25b1281b9b976bf341dd39f7e47bed..f94a4be819524973180530a22a3cda673483be5d 100644 GIT binary patch delta 4109 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 LWdJfTldlkcXz%(Y delta 4158 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 diff --git a/docs/img/logo_3d.png b/docs/img/logo_3d.png index 61376ec89f4fc4a7e322dbf186d3b20f908997a5..21307014e59a740c0ebc398c86ca8278c37f4cb2 100644 GIT binary patch delta 16327 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

l>tkHQ{2@}g8YXlkLkU&oDdc+GROLlvc6y#w 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

%WqRX=_QK>vCx-9xtqSz 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 R9Pt1E002ovPDHLkV1heq)I0zH diff --git a/kernel/Makefile b/kernel/Makefile index 0f4ad01..3b061d6 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -15,8 +15,8 @@ KERNEL = vmstupid.sys SRCS = kernel.asm \ const.inc \ klog.inc \ - mm/mm.inc \ - mm/pmm.inc \ + mm/mm.old.inc \ + mm/pmm.old.inc \ lock.inc \ gdt.inc \ isr.inc \ diff --git a/kernel/kernel.asm b/kernel/kernel.asm index 79694cf..771a54b 100644 --- a/kernel/kernel.asm +++ b/kernel/kernel.asm @@ -117,7 +117,7 @@ kmain: include 'klog.inc' include 'dev/console.inc' include 'dev/dev.inc' - include 'mm/mm.inc' + include 'mm/mm.old.inc' include 'lock.inc' include 'gdt.inc' include 'syscall.inc' diff --git a/kernel/mm/bootstrap.inc b/kernel/mm/bootstrap.inc new file mode 100644 index 0000000..a581a5f --- /dev/null +++ b/kernel/mm/bootstrap.inc @@ -0,0 +1,7 @@ + ;; File: bootstrap.inc + ;; Bootstrap whole PMM and MM + + ;; Function: mm_bootstrap + ;; Setup recursive page dir at 0xFFFFF000 and temporary identity map first 3GB +mm_bootstrap: + ret diff --git a/kernel/mm/intro.txt b/kernel/mm/intro.txt new file mode 100644 index 0000000..31afe3f --- /dev/null +++ b/kernel/mm/intro.txt @@ -0,0 +1,2 @@ +File: Introduction + diff --git a/kernel/mm/mm.inc b/kernel/mm/mm.old.inc similarity index 99% rename from kernel/mm/mm.inc rename to kernel/mm/mm.old.inc index 25c5463..22151bb 100644 --- a/kernel/mm/mm.inc +++ b/kernel/mm/mm.old.inc @@ -27,7 +27,7 @@ ;; > 0x00000000 +---------------+ ;; -include "pmm.inc" +include "pmm.old.inc" include "../sys/mmu.inc" ;; Macro: KV2P diff --git a/kernel/mm/pmm.new.inc b/kernel/mm/pmm.new.inc new file mode 100644 index 0000000..deb771a --- /dev/null +++ b/kernel/mm/pmm.new.inc @@ -0,0 +1,7 @@ + ;; Struc: PMMFreeRange +struc PMMFreeRange { + .size dd ? + .next dd ? +} + +pPMMFreeListHead dd 0 diff --git a/kernel/mm/pmm.inc b/kernel/mm/pmm.old.inc similarity index 100% rename from kernel/mm/pmm.inc rename to kernel/mm/pmm.old.inc diff --git a/kernel/sys/mmu.inc b/kernel/sys/mmu.inc index c330fca..d309f1a 100644 --- a/kernel/sys/mmu.inc +++ b/kernel/sys/mmu.inc @@ -68,3 +68,6 @@ PTE_A = 0x020 PTE_D = 0x040 PTE_PAT = 0x080 PTE_G = 0x100 + + ;; PAGE_SIZE: Page size (4Kib) +PAGE_SIZE = 4096 diff --git a/kernel/vfs.inc b/kernel/vfs.inc index 8629d25..848a89f 100644 --- a/kernel/vfs.inc +++ b/kernel/vfs.inc @@ -4,20 +4,30 @@ ;; - ;; + ;; Struc: VFS + ;; + ;; .name - Filesystem name + ;; .next - pointer to next VFS + ;; .ops - pointer to VFS function struc VFS { - .name dd ? - .next dd ? - .op dd ? + .name dd ? + .next dd ? + .ops_ptr dd ? } DEFN VFS + ;; Struc: Mount + ;; + ;; .next - address of next mount + ;; .ops_ptr - address of mount ops + ;; .vnodes - struc Mount { - .next dd ? - .op dd ? - .vnodes dd ? - .flag dd ? - .bsize dd ? - .data dd ? + .next dd ? + .ops_ptr dd ? + .vnodes dd ? + .flag dd ? + .bsize dd ? + .data dd ? } struc VFSOps { @@ -30,6 +40,9 @@ struc VFSOps { .vget dd ? } +macro VNODE_TYPE name,value { +VNODE_TYPE_#name equ value +} ;; Constants: vnode types ;; ;; VNODE_TYPE_NON - XXX @@ -40,14 +53,14 @@ struc VFSOps { ;; VNODE_TYPE_LNK - XXX ;; VNODE_TYPE_SOCK - XXX ;; VNODE_TYPE_BAD - XXX -VNODE_TYPE_NON = 0x0 -VNODE_TYPE_REG = 0x1 -VNODE_TYPE_DIR = 0x2 -VNODE_TYPE_BLK = 0x3 -VNODE_TYPE_CHR = 0x4 -VNODE_TYPE_LNK = 0x5 -VNODE_TYPE_SOCK = 0x6 -VNODE_TYPE_BAD = 0x7 +VNODE_TYPE NON, 0x0 +VNODE_TYPE REG, 0x1 +VNODE_TYPE DIR, 0x2 +VNODE_TYPE BLK, 0x3 +VNODE_TYPE CHR, 0x4 +VNODE_TYPE LNK, 0x5 +VNODE_TYPE SOCK, 0x6 +VNODE_TYPE BAD, 0x7 ;; Struc: VNode struc VNode { diff --git a/releasetools/efiimage.sh b/releasetools/efiimage.sh new file mode 100644 index 0000000..00732b3 --- /dev/null +++ b/releasetools/efiimage.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -e + +: "${IMG=stupidos_efi.img}" +: "${EFI_PART_SIZE=1000000}" # 1Mb + +if [ ! -f Makefile ] +then + exit 1 +fi + +. ./releasetools/image.defaults +. ./releasetools/image.functions + +DESTDIR=${BUILDDIR}/hd +export DESTDIR + +if [ -f "${IMG}" ] +then + rm -f "${IMG}" +fi + +mkdir -p "${BUILDDIR}" "${OBJ}" + +mkdir -p "${DESTDIR}/boot" + +create_stpdboot_ini "${DESTDIR}/boot" + +make + +echo "" +echo "Disk image at $(pwd)/${IMG}" diff --git a/releasetools/hdimage.sh b/releasetools/hdimage.sh index 7bc0178..58b6b7c 100755 --- a/releasetools/hdimage.sh +++ b/releasetools/hdimage.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -: "${IMG=disk.img}" +: "${IMG=stupidos_hd.img}" if [ ! -f Makefile ] then diff --git a/releasetools/image.functions b/releasetools/image.functions index 5585c59..0500472 100644 --- a/releasetools/image.functions +++ b/releasetools/image.functions @@ -35,6 +35,7 @@ get_grub() create_efi_image() { + echo } @@ -46,9 +47,13 @@ create_stpdboot_ini() stupid_ini="$(cat < "${target}/stupid.ini" } + +create_hd_image() +{ + +}