Commit Graph

96 Commits

Author SHA1 Message Date
Mintsuki
37701de02b build: Simplify BIOS stage1 decompressor build system
It is now a single assembly file so it can be simplified.
2026-04-19 00:35:14 +02:00
Kamila Szewczyk
9c3ead9386 decompressor: gzip/tinf -> limlz
removes external dependency on tinf by replacing the compression algorithm with a simpler, faster, smaller and more auditable fixed-width LZ77 encoding purpose-tailored to x86 code mixed with data.

before: decompressor.bin 2,492 bytes (tinf dependency) with .text 0x875 and .rodata 0x13c bytes each.
after: decompressor.bin consists only of .text, 0xe6-byte decompressor; 90.8% reduction in decompressor volume.

the dependency on gzip during compile-time is replaced by host/limlzpack.c, a Lempel-Ziv encoder in 275 SLoC that uses a suffix array matchfinder (prefix-doubling in mathcal O(n log^2 n) and Storer-Szymanski backwards parse. the fixed-width formats packets as [F][LLLL][MMM], favouring a literal-skewed distribution with F switching between one-byte and two-byte offsets (favouring recent statistics).

integrity checking is done via crc32 with the polynomial 0xEDB88320, reflected.

the effective loss in compression ratio by using a tremendously simpler and less packed with edge cases algorithm causes a compression ratio hit well below 1KB, factoring in the stub sizes.

also adds new machinery for host cc detection per review.
2026-04-19 00:29:09 +02:00
Mintsuki
8ba6e3e7f4 ci: Remove QA/typos check 2026-04-19 00:20:24 +02:00
Mintsuki
0f0809c79a build: Updates for new edk2-ovmf-nightly 2025-12-09 10:32:42 +01:00
Mintsuki
dde0bce0ba build: Update repository links and adjustments for PicoEFI rebrand 2025-08-20 08:00:14 +02:00
Mintsuki
cb304d05cf build: Get rid of freestanding-toolchain
And some other miscellaneous improvements.
2025-08-07 18:22:05 +02:00
Mintsuki
05b1a75fde misc: Update Flanterm to latest 2025-07-14 15:36:58 +02:00
Mintsuki
996a0c1801 misc: Move to using separate libfdt repository 2025-07-12 12:08:05 +02:00
Mintsuki
b532faea1f misc: Move to using separate limine-protocol repository 2025-07-12 09:25:05 +02:00
Mintsuki
cb463226b9 misc: Update to latest, packed, cc-runtime 2025-04-06 22:38:15 +02:00
Mintsuki
97db4ca4ca build: Drop -0bsd suffix from in-tree copy of freestnd-c-hdrs-0bsd 2025-03-13 04:18:36 +01:00
mintsuki
855c52a030 build: Use new, non-packed, cc-runtime revisions 2024-11-05 23:47:33 +01:00
Marvin Friedrich
4cdda6a272 protos/limine: Add device tree blob override config option (#419)
* protos/limine: Add dtb_path config option

* test: Add a device tree and dtb_path to the config

* docs: Add dtb_path configuration information

* protos/limine: Fix missing argument for dtb_path for x86

* protos/limine: Correct panic message argument

* protos/limine: Use freadall instead of freadall_mode
2024-10-18 20:01:24 +02:00
mintsuki
b6be98a0f6 build: Rebrand limine-efi to nyu-efi 2024-09-13 08:07:53 +02:00
mintsuki
5517cb2824 build: freestanding-headers -> freestnd-c-hdrs-0bsd 2024-09-13 07:44:23 +02:00
mintsuki
a0a39575b1 Revert "build: freestanding-headers -> freestnd-c-hdrs"
This reverts commit 91b7ef85ab.
2024-09-09 11:59:10 +02:00
mintsuki
91b7ef85ab build: freestanding-headers -> freestnd-c-hdrs 2024-09-08 15:39:32 +02:00
mintsuki
3e4b9c11b8 build: bootstrap: Update cc-runtime 2024-08-10 11:41:48 +02:00
mintsuki
c2486583cf build: Get rid of nix flake stuff 2024-08-01 05:59:31 +02:00
Keegan Saunders
d9a2fb95a9 Add LoongArch support 2024-07-31 23:05:27 -04:00
mintsuki
fc7ae750d4 build: Misc build system updates 2024-07-28 05:16:33 +02:00
mintsuki
0641e56ac8 build: .gitignore: Remove unused /common/font.bin line 2024-07-09 21:53:04 +02:00
biopuppet
0b98b7b1c0 misc: Add local development(clangd, etc) ignored files. 2024-07-07 10:08:16 +08:00
xvanc
b5c6bdcf10 build: switch to git repo for libfdt 2024-05-30 17:38:46 -05:00
xvanc
1ebeb06570 build: add libfdt 2024-05-30 10:41:45 -05:00
mintsuki
053fc0ff70 Revert "build: Make version gathering similar to timestamps gathering"
This reverts commit 9f98cf150a.
2024-04-14 23:41:45 +02:00
mintsuki
9f98cf150a build: Make version gathering similar to timestamps gathering 2024-04-10 15:01:57 +02:00
mintsuki
a1ca6f15d4 build: Use timestamps file based on last commit date instead of host date 2024-04-08 11:43:39 +02:00
mintsuki
477e8338ae build: Replace xz with bzip2 and lzip for release tarballs 2024-03-30 06:14:39 +01:00
Philipp Schuster
cc4695367f nix: init flake.nix
This inits a flake.nix into the repository that exports a convenient Nix shell.
When using `$ nix develop`, users will get a shell with all relevant tools to
build the repository. If one uses a "direnv" integration into their shell, the
environment is automatically loaded.
2024-03-19 15:09:38 +01:00
mintsuki
826a32f729 build: Remove useless misc references to freestanding-toolchain 2024-02-01 00:52:30 +01:00
mintsuki
dbbede616b build: Use git for all subprojects 2024-01-26 01:13:18 +01:00
mintsuki
ffd67aecbc misc: Use cc-runtime instead of libgcc-binaries 2024-01-21 18:26:07 +01:00
mintsuki
f1959d2d05 build: bootstrap: Fix versions of external dependencies 2024-01-13 20:11:22 +01:00
mintsuki
b843dba729 build: Move to master branch for stb_image 2024-01-07 02:13:49 +01:00
mintsuki
3c8d2c0740 build: Remove traces of INSTALL file 2023-12-26 18:48:47 +01:00
mintsuki
a5051f92bf build: Changes to comply more with the GNU build system - adds ChangeLog 2023-10-28 05:16:45 +02:00
mintsuki
a795dc1972 build: Backport misc autoconf/pkgconf improvements 2023-10-24 01:21:24 +02:00
mintsuki
b78309b45a misc: Remove tinf from tree, pull at bootstrap time 2023-06-06 01:16:58 +02:00
xvanc
9274ee656e Initial riscv64 port (#274)
* initial riscv64 port

* enable Paging Mode feature for all architectures

* riscv: add missing protocol docs

* riscv: fix tests

* docs: clarify `LIMINE_PAGING_MODE_DEFAULT` macro

* build: fix whitespace in common/GNUmakefile

* riscv: default to Sv48 paging when supported

* vmm: make `VMM_MAX_LEVEL` 1-indexed

* limine: do not call `reported_addr()` before finaling paging mode

smp/riscv: do not overwrite the argument passed to APs

* limine/riscv: update default paging mode in limine.h

* test/riscv: pad OVMF.fd when downloading it
2023-06-04 01:36:06 +02:00
mintsuki
7ad444936e host: Condense various host utilities into a single executable 2023-04-11 22:04:05 +02:00
mintsuki
779571339e misc: Updates for Flanterm rebrand 2023-03-29 22:43:06 +02:00
mintsuki
9009404a11 build: Updates for newer freestanding-toolchain 2023-03-14 17:20:46 +01:00
mintsuki
8d61d0ab3a misc: Use freestanding-toolchain instead of cross-detect 2023-03-13 20:40:32 +01:00
mintsuki
d17e220e61 docs: Add man pages for host executables 2023-02-21 00:15:04 +01:00
mintsuki
71b3ae548b compress: Replace tinf's inflate implementation with stb_image's zlib 2023-02-15 11:21:53 +01:00
mintsuki
4d855fc17e term: Move to use external, portable terminal 2022-10-04 00:58:00 +02:00
mintsuki
2460b33f9c build: Misc build system improvements 2022-08-23 00:21:09 +02:00
mintsuki
dc3a81cb61 build: Drop support for building GCC toolchain 2022-08-09 13:30:16 +02:00
mintsuki
6106285d35 build: Move to using external cross-detect package 2022-07-05 09:14:48 +02:00