fix(storage): harden disk operations, add volume labels, and stabilize AHCI discovery

This commit is contained in:
Aaron committed 2026-10-31 16:30:40 +00:00
1 parent 7e99bc2db1
commit d1ecd3fc41
18 files changed
+1563 -1493

No files matched your search

+13
View File
@@ -271,6 +271,7 @@ procedure fpc_shortstr_assign(len: longint; sstr, dstr: Pointer); compilerproc;
any int64/uint64 arithmetic occurs (e.g. sint32 * uint32 promotion).
Must live in the system unit so the compiler can resolve it. }
function fpc_mul_int64(f1, f2: int64): int64; compilerproc;
function fpc_mul_dword_to_qword(f1, f2: uint32): qword; compilerproc;
function fpc_div_int64(d, n: int64): int64; compilerproc;
function fpc_mod_int64(d, n: int64): int64; compilerproc;
function fpc_mod_qword(d, n: qword): qword; compilerproc;
@@ -523,6 +524,18 @@ begin
fpc_mul_int64 := res;
end;
function fpc_mul_dword_to_qword(f1, f2: uint32): qword; [public, alias: 'FPC_MUL_DWORD_TO_QWORD']; compilerproc;
var res: qword;
begin
asm
MOV EAX, f1
MUL f2
MOV DWORD [res], EAX
MOV DWORD [res+4], EDX
end;
fpc_mul_dword_to_qword := res;
end;
{ ---------- 64-bit division / modulo ---------- }
{ Helper: unsigned 64÷64→64 using shift-subtract (binary long division).