Andrius Štikonas
ddcc53ab44
hex0: optimize stack alignment code.
2023-12-17 17:34:49 +00:00
Andrius Štikonas
20c3bfbb99
Further hex0 size reduction and calling convention fixes.
2023-12-16 17:09:51 +00:00
Andrius Štikonas
2e2f608c31
Minor whitespace cleanup.
2023-12-10 23:10:28 +00:00
Andrius Štikonas
4a1f2ba310
Reduce size of hex0 by 3 bytes.
2023-12-09 19:54:44 +00:00
Andrius Štikonas
dde77cdb0f
Fix stack alignment to 16 bytes and save non-volatile registers.
2023-12-09 17:23:27 +00:00
Andrius Štikonas
e5453f203a
Remove an extra confusing zero from SIMPLE_FS_PROTOCOL_GUID.
2022-10-23 22:59:37 +01:00
Andrius Štikonas
da7132246a
Add relocatable POSIX version of cc_amd64.S.
2022-10-01 15:15:57 +01:00
Andrius Štikonas
999a4b5148
Use .intel_syntax directive instead of Makefile option in .S files.
2022-09-27 22:52:18 +01:00
Andrius Štikonas
32deb0ffaf
hex0: Implement various improvements:
...
* Make sure to close all protocols before exit.
* Use more sophisticated command line argument processing
that pushes command line arguments onto stack.
* Switch to more readable M1 defines.
2022-09-10 23:57:31 +01:00
Andrius Štikonas
7020101bd7
Remove a separate .data section in assembly prototypes to match what we are doing in hex/M1.
2022-09-04 00:45:13 +01:00
Andrius Štikonas
ba541383ad
Add catm.S prototype.
2022-08-14 17:25:44 +01:00
Andrius Štikonas
a4d36cc940
Add hex1.M1 prototype.
2022-08-07 23:15:34 +01:00
Andrius Štikonas
368377191b
Add hex1.S prototype.
2022-08-07 21:45:05 +01:00
Andrius Štikonas
9af7fdf9bb
kaem-minimal.S: make sure to close files and free pools when exiting.
2022-07-30 10:08:23 +01:00
Andrius Štikonas
8e22fee483
Switch to relative addressing of labels.
2022-07-24 10:11:45 +01:00
Andrius Štikonas
a8e0dd50a2
Make sure we use 64-bit pointers for stack address.
2022-07-23 20:14:45 +01:00
Andrius Štikonas
3317e845f5
Add hex0.M1.
2022-07-23 18:41:30 +01:00
Andrius Štikonas
93c8c5372c
Swap rax and rbx to optimize machine code a bit.
2022-07-23 15:15:40 +01:00
Andrius Štikonas
7f27324a5b
Port hex0.S optimizations from stage0-posix.
2022-07-20 22:48:41 +01:00
Andrius Štikonas
85e3b0caef
Actually sub esp, 32 is only 3 bytes long, so undo some of the pop rax changes.
2022-07-17 13:53:31 +01:00
Andrius Štikonas
bfb164eb68
hex0.S: save another byte when accessing stack contents.
2022-07-17 13:23:18 +01:00
Andrius Štikonas
d96dc0e322
hex0.S: optimize setting some immediate values.
2022-07-17 13:13:36 +01:00
Andrius Štikonas
e7bd0b67ab
hex0.S: Use push rax to allocate stack space instead of sub rsp, 32.
...
Easier to encode to hex0 and also more efficient for smaller allocations
such as sub rsp, 16.
2022-07-17 12:50:29 +01:00
Andrius Štikonas
1d3ea9e5c0
hex0.S: use r14 to store system->boot->open_protocol rather than system->boot.
...
Also reuse r14 for rootdir and free up rsi for further optimizations.
2022-07-17 12:30:29 +01:00
Andrius Štikonas
f5bae9d646
hex0.S: more stack optimizations.
...
Pass function arguments with push opcodes which are shorter
than using e.g. "mov qword ptr [rsp+40], 1"
2022-07-17 12:25:27 +01:00
Andrius Štikonas
555caea6c7
hex0.S: move global variables to stack.
2022-07-17 01:48:55 +01:00
Andrius Štikonas
71bca6e471
hex0.S: backport some optimizations from stage0-posix-amd64.
2022-07-16 20:09:53 +01:00
Andrius Štikonas
4afbfc56cc
hex0.S: optimize read/write_byte functions.
2022-07-16 01:06:47 +01:00
Andrius Štikonas
3e95bb7d48
hex0.S: use ret rather than calling system->boot->exit()
2022-07-15 23:09:35 +01:00
Andrius Štikonas
9895b0da06
hex0.S: initial working version, still needs some optimizations.
2022-07-15 22:37:45 +01:00
Andrius Štikonas
159d30e184
hex0.S: open source file for reading.
2022-07-15 00:43:57 +01:00
Andrius Štikonas
34060fc7e5
hex0.S: open target file for writing.
2022-07-14 22:55:42 +01:00
Andrius Štikonas
8a344b7275
hex0.S: add argument parsing and open root device.
2022-07-13 22:47:20 +01:00
Andrius Štikonas
d0e6bdb758
hex0.S: implement open_protocol function.
2022-07-11 01:27:00 +01:00
Andrius Štikonas
9cb1d5b7f0
hex0.S: print hello world as a test.
2022-07-10 22:11:32 +01:00
Andrius Štikonas
081a890e05
Add a skeleton file for eventual assembly port of hex0.
2022-07-10 16:24:23 +01:00