Comments (3)
Why would we want to put the Kernel up there?
All the reasons I Saw for doing so are:
- 32-bit binaries can use the whole address space
- we don't have precompiled 32-bit binaries for BareMetal
- It's easier to set up VM86 processes
- currently there is no option to switch to VM86 mode and i don't think its planned
- The Applications don't have to know how much memory is required by the Kernel
- I think with such a tiny Kernel we're unlikely to hit 0x200000 soon so that should be ok too
If there are reasons to put the Kernel in the higher helf please let me know, otherwise it'd suggest to keep it just where it is
P.S. Am I right in my prediction that the whole memory just gets identity mapped?
from baremetal-os-legacy.
The main reason was to have a linear range of memory without gaps. There are a lot of gaps in lower memory that can't be used by an application. The plan would be to map available memory starting at the higher half and run out of there without worrying about gaps.
from baremetal-os-legacy.
ah ok this sounds reasonable
isn't this a issue of th bootloader?
especially this part
; Move the trailing binary to its final location
mov rsi, 0x8000+6144 ; Memory offset to end of pure64.sys
mov rdi, 0x100000 ; Destination address at the 1MiB mark
mov rcx, 0x0D00 ; For up to 26KiB kernel (26624 / 8)
rep movsq ; Copy 8 bytes at a time
and all the things calling the kernel syscalls (0x100010 - 0x1000C0 at the moment) must be adjusted
EDIT: and the paging table
from baremetal-os-legacy.
Related Issues (20)
- porting baremetal-os on risc-v HOT 3
- It's actually 2015 now... HOT 3
- Memory mapped files (or file mapped virtual address space for one program/process/thread) HOT 9
- [INFO] 64-bit ARM HOT 7
- Stuck at iddrive_poll with VirtualBox HOT 7
- asm2c
- SATA drive support HOT 3
- Use switch tables instead of long strings of cmp/je combos HOT 2
- README.md says autoconf -fi HOT 4
- Boot from usb HOT 1
- tried to add elf format support but failed to run any app HOT 2
- Safe to run on a physical host yet? HOT 1
- Hi, I can't to run the BareMetal-OS HOT 5
- BareMetal Rust HOT 2
- e1000 driver does not setup bus mastering HOT 5
- CRLF or LF or CR or ? HOT 4
- os_output_char in Kernel API HOT 5
- LICENCE.TXT / CREDITS.TXT HOT 3
- BareMetal Rust PoC HOT 4
- Loader HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from baremetal-os-legacy.