Justin C. Miller
2adef874ee
[boot] Make sure the kernel entrypoint abi is sysv
...
Adding this now because I'm sure I'll forget later. Make sure to
annotate the entrypoint function pointer as `__attribute__((sysv_abi))`
so that it's not called via ms abi like the rest of the loader.
2020-05-16 18:44:35 -07:00
Justin C. Miller
a6e4995963
[boot] Fix call to exit_boot_services
...
Exiting boot services can't actually be done from inside
`bootloader_uefi_main`, because there are objects in that scope that run
code requiring boot services in their destructors.
Also added `support.cpp` with `memcpy` because clang will emit
references to `memcpy` even in freestanding mode.
Added a `debug_break` function to allow for faking breakpoints when
connecting to the bootloader with GDB.
Tags: debug
2020-05-13 02:08:47 -07:00
Justin C. Miller
2bd91c2d94
[boot] Split get_uefi_mappings and module creation
...
The `get_mappings()` function was getting too large, and some of its
output is needed by more than just the building of the kernel map. Split
it out into two.
Tags: boot memory
2020-05-10 16:43:18 -07:00
Justin C. Miller
c713f4ff6f
[boot] Build the kernel mem map from the UEFI one
...
Created kernel args memory map structure, looping through UEFI's memory
map to copy and condense.
Tags: boot memory
2020-05-10 16:26:17 -07:00
Justin C. Miller
21b0b08908
[general] Add a git commit template
...
I've been pretty lax with my commit messages despite attempts to
standardize them. Trying out setting a template. This template can be
applied with:
`git config commit.template .git-commit-template`
See: [another template](https://github.com/joelparkerhenderson/git_commit_template )
See: [another template](https://gist.github.com/adeekshith/cd4c95a064977cdc6c50 )
Tags: git
2020-05-10 11:19:33 -07:00
Justin C. Miller
88ace0a99f
Fix a bug in print_long_hex()
...
Because of order of shifting operations and a literal that defaulted
to int, the high 32 bits were printed incorrectly.
2020-05-10 02:31:53 -07:00
Justin C. Miller
10c8f6e4b5
Clean and document header files.
...
- Add missing doc comments to header files
- Move allocate_kernel_args to main.cpp
- Split functions out into pointer_manipulation.h
2020-05-10 01:42:22 -07:00
Justin C. Miller
9aa749e877
Parse ELF and load kernel, specify mem types
...
* Very bare-bones ELF parsing to load the kernel
* Custom memory type values for allocated memory
2020-05-09 21:25:45 -07:00
Justin C. Miller
f78a99927a
[boot] Add initial stubs for loading kernel ELF
2020-05-02 23:58:41 -07:00
Justin C. Miller
ec794f4f99
Move module loading in main into helper function
2020-03-02 19:43:44 -08:00
Justin C. Miller
884182217c
Fix file loading size bug
2020-03-02 19:31:40 -08:00
Justin C. Miller
d94907ae79
Loading files
2020-02-25 22:22:12 -08:00
Justin C. Miller
4accfd136e
Add file functionality in fs.cpp
2020-02-24 02:19:15 -08:00
Justin C. Miller
1a223d6ef5
Move args structure allocation to a function in memory.cpp
2020-02-24 02:18:14 -08:00
Justin C. Miller
36b3ad8154
Add an optional context string for status line messges
2020-02-24 02:15:45 -08:00
Justin C. Miller
460973954e
Remove utility.*
2020-02-23 18:32:10 -08:00
Justin C. Miller
303a78065e
Move find_acpi_table to new hardware.cpp
2020-02-23 18:28:20 -08:00
Justin C. Miller
93f0b70eba
Move to RAII-style status_line objects for console status
2020-02-23 17:55:53 -08:00
Justin C. Miller
6f5a2a3d3f
Update kernel args to be module-based
...
- The old kernel_args structure is now mostly represented as a series of
'modules' or memory ranges, tagged with a type. An arbitrary number
can be passed to the kernel
- Update bootloader to allocate space for the args header and 10 module
descriptors
2020-02-23 00:07:50 -08:00
Justin C. Miller
ec563ea8e4
Allow multiple calls to console::status_* functions
2020-02-22 17:52:51 -08:00
Justin C. Miller
570638bba6
Don't require system_table in console
2020-02-22 15:47:07 -08:00
Justin C. Miller
f627ea7de0
Re-add functionality to boot with new UEFI headers
...
- Pointer fixup event
- ACPI searching
- Move CHECK_* to using try_or_raise()
2020-02-22 14:57:28 -08:00
Justin C. Miller
521c132801
Back to a basic UEFI stub
2020-02-22 01:54:00 -08:00
Justin C. Miller
bc5115b9ea
Removed old UEFI headers
2020-02-22 01:52:49 -08:00
Justin C. Miller
6963304c01
Changing jsix license
...
jsix is now licensed under the MPL2.
2019-10-06 01:37:46 -07:00
Justin C. Miller
ae651a4fcd
Move cpptoml.h to external directory
2019-10-06 00:46:30 -07:00
Justin C. Miller
17c2fe6e4e
Add debig-exit device to qemu.sh for future tests
2019-10-06 00:29:10 -07:00
Justin C. Miller
f066ac3ffd
Move catch.hpp to external directory
2019-10-06 00:01:27 -07:00
Justin C. Miller
edcf633e84
Remove cargo-culted znocombreloc ld flag
2019-08-10 13:49:57 -07:00
Justin C. Miller
d09a454b8b
Normalize bootloader's con_debug line endings
2019-07-21 22:29:19 -07:00
Justin C. Miller
d6329ea9bf
Update to bonnibel 2.1
2019-07-21 21:10:43 -07:00
Justin C. Miller
83897048ab
Update for bonnibel 2.0
2019-07-20 23:19:21 -07:00
Justin C. Miller
7cc59770b8
Update libc for new sysall values via peru
2019-07-07 10:07:00 -07:00
Justin C. Miller
b056d95920
Organize system calls
...
* syscalls should all return j6_status_t now
* syscalls are grouped by category in name as well as in files
2019-07-07 09:54:29 -07:00
Justin C. Miller
19cd01ef8d
Add initial pass of syscall API kobjects
2019-07-07 09:54:29 -07:00
Justin C. Miller
b3f88bbe02
Further refine sysroot.
...
* remove need for NASM from sysroot
* have peru sync libc separately
2019-07-07 09:52:06 -07:00
Justin C. Miller
f57f38edbd
Remove old ident_page_flags
2019-07-05 20:52:04 -07:00
Justin C. Miller
12377ae730
Ignore .peru
2019-07-05 17:29:56 -07:00
Justin C. Miller
bb93dcef44
Remove sysroot binutils dependency
...
* Link host-targeted binaries with lld
* Add peru script for getting prebuilt sysroot
* Add readme for prebuilt sysroots
* Remove non-working build_sysroot_gcc.sh, rename clang version to just
build_sysroot.sh
2019-07-05 17:26:24 -07:00
Justin C. Miller
678a12dc90
Ignore .gdb_history
2019-07-04 17:43:42 -07:00
Justin C. Miller
c3dacb2906
Fix mis-flagged page table entries
2019-07-04 17:43:08 -07:00
Justin C. Miller
3a68ec439d
Add CPU feature checking.
...
Introduces the cpu_features.inc table to enumerate the CPU features that
j6 cares about. Features in this table marked CPU_FEATURE_REQ are
considered required, and the boot process will log an error and halt
when any of these features are not supported. This should save me from
banging my head against the wall like I did last night with the missing
pdpe1gb feature.
2019-07-04 16:41:25 -07:00
Justin C. Miller
7ce418aabc
Fix KVM page faults from lack of 1GB page support
2019-07-04 02:51:50 -07:00
Justin C. Miller
8ee5091f41
update gitignore
2019-07-03 21:55:23 -07:00
Justin C. Miller
6285517ef7
Rename Popcorn to jsix.
...
See README.md for more information.
2019-05-27 14:07:29 -07:00
Justin C. Miller
2b0cd6f2f2
Make qemu.sh work with i3 as well
2019-05-26 10:35:22 -07:00
Justin C. Miller
a653c55941
Use 0 instead of syscall_invalid in syscall jump list
2019-05-18 18:11:08 -07:00
Justin C. Miller
ce035d2a43
Finish address_manager to vm_space transition
2019-05-18 18:06:57 -07:00
Justin C. Miller
2d54eb5143
Add vmem log area
2019-05-11 11:32:22 -07:00
Justin C. Miller
b9c8edb657
Allow clang to colorize output in ninja
2019-04-18 00:28:23 -07:00