cosmopolitan/libc/runtime
tkchia 0da47c51de
[metal] Allow programs larger than 440 KiB to run in bare metal mode (#685)
* [metal] Copy program pages to extended memory at startup
* [metal] Reclaim base memory pages for later app use
* [metal] Load program pages beyond 1st 440 KiB to extended memory

o//examples/hellolua.com now runs correctly under QEMU (in
legacy BIOS mode).

* [metal] Place GDT in read/write segment

The CPU absolutely needs to alter the GDT when loading the
task register (via ltr).  To account for this, I move the
GDT into a read/write data section.  There is still a "rump"
read-only GDT in the text section that is used by the real
mode bootloader.

We also delay the loading of the task register (ltr) until
after the IDT and TSS are finally set up.

* [metal] Get examples/vga2.c serial output working for UEFI boot
* [metal] Get examples/vga2.c VGA output working for UEFI boot
* [metal] Allow munmap() to reclaim dynamically allocated pages
* Place TLS sections right after .text, not after embedded zip file

Co-authored-by: tkchia <tkchia-cosmo@gmx.com>
2022-12-17 17:51:20 -08:00
..
__sigsetjmp_tail.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
__utmpxname.S Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
abort.c Add notpossible keyword 2022-09-03 20:35:31 -07:00
arch_prctl.c Make more threading improvements 2022-11-01 23:28:26 -07:00
brk.c Make more threading improvements 2022-11-01 23:28:26 -07:00
brk.internal.h Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
buffer.internal.h Pay off more technical debt 2022-09-12 23:36:56 -07:00
clktck.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
clktck.h Make major improvements to redbean and libraries 2021-04-18 12:34:15 -07:00
clone-linux.S Make fixes and improvements 2022-11-08 10:11:46 -08:00
clone-nt.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
clone-openbsd.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
clone-xnu.S Make fixes and improvements 2022-11-08 10:11:46 -08:00
clone.c Make improvements 2022-11-10 21:52:47 -08:00
clone.internal.h Make fixes and improvements 2022-11-08 10:11:46 -08:00
closesymboltable.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
cocmd.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
cosmo.S Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
daemon.c Greatly expand system() shell code features 2022-10-11 21:30:31 -07:00
dlfcn.h Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
dsohandle.S Introduce --strace flag for system call tracing 2022-03-18 18:07:28 -07:00
e820.internal.h Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
efimain.greg.c [metal] Allow programs larger than 440 KiB to run in bare metal mode (#685) 2022-12-17 17:51:20 -08:00
efipostboot.S [metal] Allow programs larger than 440 KiB to run in bare metal mode (#685) 2022-12-17 17:51:20 -08:00
enable_threads.c Make fixes and improvements 2022-10-19 07:19:19 -07:00
enable_tls.c Make detached threads work better 2022-11-09 03:58:57 -08:00
endutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
endutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
exit.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
exit2.c Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
ezmap.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
ezmap.internal.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
fegetround.c Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
fenv.h Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
fenv.S Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
fesetround.c Fix issues revealed by ECMAScript test262 2021-04-10 17:15:35 -07:00
findcombinary.c Make improvements 2022-04-28 09:57:07 -07:00
finddebugbinary.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
fltrounds.c Fix issues revealed by ECMAScript test262 2021-04-10 17:15:35 -07:00
fork-nt.c Make detached threads work better 2022-11-09 03:58:57 -08:00
fork-sysv.c Make fixes and improvements 2022-10-19 07:19:19 -07:00
fork.c Make fixes and improvements 2022-11-08 10:11:46 -08:00
fpathconf.c Make more compatibility improvements 2022-09-06 12:36:34 -07:00
fpreset.S Clean old .source directive out of asm code 2022-03-18 12:43:21 -07:00
free_s.c Improve locks and signals 2022-04-12 05:20:17 -07:00
ftrace-hook.S Make some systemic improvements 2022-05-18 16:52:36 -07:00
ftraceinit.greg.c Make more threading improvements 2022-11-01 23:28:26 -07:00
ftracer.c Make more threading improvements 2022-11-01 23:28:26 -07:00
getargmax.c Make improvements 2022-04-28 09:57:07 -07:00
getdosargv.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
getdosenviron.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
getinterpreterexecutablename.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getlogin.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getlogin_r.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getmaxfd.c Reduce Makefile dependencies by 4% 2022-05-23 15:07:01 -07:00
getmemtracksize.c Add malloc logging tool 2022-05-26 23:19:22 -07:00
getpagesize.S Make more improvements to threading support 2022-10-09 00:08:47 -07:00
getresourcelimit.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
getsymbolname.c Improve memory safety 2021-10-13 17:27:13 -07:00
getsymboltable.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
getutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutid.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxid.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxline.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
grow.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
hook.greg.c Make fixes and improvements 2022-10-19 07:19:19 -07:00
inflate.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
init.S Reduce build graph by another 14 percent 2022-08-17 20:01:21 -07:00
interceptflag.greg.c Improve synchronization 2022-04-15 15:31:55 -07:00
internal.h Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
isdynamicexecutable.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
isheap.c Fix some issues and do some code cleanup 2022-05-23 10:15:53 -07:00
ismemtracked.greg.c Make some more fixups 2022-06-12 09:37:17 -07:00
jmpstack.S Improve signals and memory protection 2022-04-12 22:11:00 -07:00
ldso.c Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
login_tty.c Introduce clock_nanosleep() 2022-10-05 06:37:15 -07:00
mapanon.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mapelfread.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
mapshared.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mapstack.c Add phtread_setname_np() and pthread_getname_np() 2022-09-07 19:04:05 -07:00
memtrack.internal.h Make fixes and improvements 2022-10-19 07:19:19 -07:00
memtrack64.txt Implement pthread_atfork() 2022-10-16 12:25:13 -07:00
memtracknt.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
metalprintf.greg.c Rename hidden keyword to _Hide 2022-11-08 12:55:28 -08:00
metalprintf.internal.h Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
mman.internal.h [metal] Allow programs larger than 440 KiB to run in bare metal mode (#685) 2022-12-17 17:51:20 -08:00
mmap.c Workaround MAP_GROWSDOWN unavailability on WSL 2022-11-02 01:38:06 -07:00
morph.greg.c Make fixes and improvements 2022-10-19 07:19:19 -07:00
morph.h Make fixes and improvements 2022-10-19 07:19:19 -07:00
morph_tls.c Make more threading improvements 2022-11-01 23:28:26 -07:00
mprotect-nt.greg.c Make more threading improvements 2022-11-01 23:28:26 -07:00
mprotect.c Fix corner case in Linux stack mappings 2022-10-03 13:43:52 -07:00
mremap.c Make more threading improvements 2022-11-01 23:28:26 -07:00
msync-nt.c Clean up some of the threading code 2022-09-08 12:31:56 -07:00
msync.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
munmap.c Make more threading improvements 2022-11-01 23:28:26 -07:00
openexecutable.S Fix Redbean when file is read-only (#365) 2022-03-14 17:13:28 -07:00
opensymboltable.greg.c Improve cancellations, randomness, and time 2022-11-05 23:45:32 -07:00
pathconf.h Make more compatibility improvements 2022-09-06 12:36:34 -07:00
pc.internal.h [metal] Allow programs larger than 440 KiB to run in bare metal mode (#685) 2022-12-17 17:51:20 -08:00
peekall.S Add MODE=optlinux build mode (#141) 2021-10-14 19:36:49 -07:00
printargs.c Make more threading improvements 2022-11-01 23:28:26 -07:00
printmaps.c Clean up some of the threading code 2022-09-08 12:31:56 -07:00
progname.S Clean old .source directive out of asm code 2022-03-18 12:43:21 -07:00
runtime.h Make more threading improvements 2022-11-01 23:28:26 -07:00
runtime.mk Improve pthread_join() 2022-09-16 14:02:06 -07:00
set_tls.c Make more threading improvements 2022-11-01 23:28:26 -07:00
setstack.S Remove more nonstandard stuff from cosmopolitan.h 2021-03-01 00:18:23 -08:00
setutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
setutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
sigsetjmp.S Improve cosmo's conformance to libc-test 2022-10-10 17:52:41 -07:00
stack.h Optimize memory layout 2022-09-12 04:26:52 -07:00
stackchkfail.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
stackchkfaillocal.c Change license 2020-12-27 17:18:44 -08:00
stackuse.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
straceinit.greg.c Make more threading improvements 2022-11-01 23:28:26 -07:00
symbolic.h wip on intellisense (again) 2021-02-02 11:14:45 -05:00
symbols.c Make more threading improvements 2022-11-01 23:28:26 -07:00
symbols.internal.h Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
sysconf.c Greatly expand system() shell code features 2022-10-11 21:30:31 -07:00
sysconf.h Greatly expand system() shell code features 2022-10-11 21:30:31 -07:00
untrackmemoryintervals.c Fix bugs and make code tinier 2022-10-09 23:21:34 -07:00
unwind.c Fix libunwind stubs 2022-06-26 05:29:25 -07:00
unwind.h Fix libunwind stubs 2022-06-26 05:29:25 -07:00
updwtmp.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
updwtmpx.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
utmp.h Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
utmpx.h Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
valist.c Remove plenty of makefile misconfigurations 2022-07-21 09:20:59 -07:00
vfork.S Make fixes and improvements 2022-10-19 07:19:19 -07:00
warnifpowersave.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
weakfree.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
winargs.internal.h Add torture test for zipos file descriptors 2022-06-15 16:29:49 -07:00
winmain.greg.c Workaround WSL misconfiguring the x87 FPU 2022-11-02 02:17:14 -07:00