Use llseek syscall instead of lseek.
This commit is contained in:
parent
2c3cd9c7c1
commit
cff6d94c58
2
.gitignore
vendored
2
.gitignore
vendored
@ -7,4 +7,6 @@ kofuse
|
||||
mkdirrange
|
||||
*.img
|
||||
*.img.xz
|
||||
*.img.gz
|
||||
*.img.lz4
|
||||
*.img.info
|
||||
|
26
kolibri.asm
26
kolibri.asm
@ -68,13 +68,18 @@ proc disk_read stdcall, userdata, buffer, startsector:qword, numsectors
|
||||
pushad
|
||||
mov eax, dword[startsector + 0] ; sector lo
|
||||
mov edx, dword[startsector + 4] ; sector hi
|
||||
imul ecx, eax, 512
|
||||
xor ecx, ecx
|
||||
imul edx, eax, 512
|
||||
;DEBUGF 1, "lseek to: %x\n", ecx
|
||||
mov eax, [userdata]
|
||||
mov ebx, [eax + FILE_DISK.fd]
|
||||
mov edx, SEEK_SET
|
||||
mov eax, SYS_LSEEK
|
||||
sub esp, 8
|
||||
mov esi, esp
|
||||
mov edi, SEEK_SET
|
||||
mov eax, SYS_LLSEEK
|
||||
int 0x80
|
||||
;DEBUGF 1, "lseek: %x\n", eax
|
||||
add esp, 8
|
||||
;DEBUGF 1, "lseek: %x\n",eax
|
||||
popad
|
||||
|
||||
pushad
|
||||
@ -98,13 +103,18 @@ proc disk_write stdcall, userdata, buffer, startsector:qword, numsectors
|
||||
pushad
|
||||
mov eax, dword[startsector + 0] ; sector lo
|
||||
mov edx, dword[startsector + 4] ; sector hi
|
||||
imul ecx, eax, 512
|
||||
xor ecx, ecx
|
||||
imul edx, eax, 512
|
||||
;DEBUGF 1, "lseek to: %x\n", ecx
|
||||
mov eax, [userdata]
|
||||
mov ebx, [eax + FILE_DISK.fd]
|
||||
mov edx, SEEK_SET
|
||||
mov eax, SYS_LSEEK
|
||||
sub esp, 8
|
||||
mov esi, esp
|
||||
mov edi, SEEK_SET
|
||||
mov eax, SYS_LLSEEK
|
||||
int 0x80
|
||||
;DEBUGF 1, "lseek: %x\n", eax
|
||||
add esp, 8
|
||||
;DEBUGF 1, "lseek: %x\n",eax
|
||||
popad
|
||||
|
||||
pushad
|
||||
|
@ -3,7 +3,8 @@ SYS_READ = 3
|
||||
SYS_WRITE = 4
|
||||
SYS_OPEN = 5
|
||||
SYS_CLOSE = 6
|
||||
SYS_LSEEK = 19
|
||||
;SYS_LSEEK = 19
|
||||
SYS_LLSEEK = 140
|
||||
|
||||
SEEK_SET = 0
|
||||
SEEK_CUR = 1
|
||||
|
Loading…
Reference in New Issue
Block a user