summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/Boot/amd64-desktop.make15
-rw-r--r--dev/Kernel/HALKit/AMD64/Storage/AHCI.cc6
2 files changed, 11 insertions, 10 deletions
diff --git a/dev/Boot/amd64-desktop.make b/dev/Boot/amd64-desktop.make
index 2c8c5321..362c74cf 100644
--- a/dev/Boot/amd64-desktop.make
+++ b/dev/Boot/amd64-desktop.make
@@ -50,14 +50,12 @@ endif
ifeq ($(shell uname), Darwin)
EMU_FLAGS=-M q35 -net none -smp 4 -m 8G \
- -bios $(BIOS) -cdrom $(BOOT) -boot d -drive \
- file=fat:rw:src/Root/,index=3,format=raw
+ -bios $(BIOS) -cdrom $(BOOT) -boot d
endif
ifneq ($(shell uname), Darwin)
EMU_FLAGS=-net none -smp 4 -m 8G \
- -bios $(BIOS) -M q35 -cdrom $(BOOT) -boot d -accel kvm -drive \
- file=fat:rw:src/Root/,index=3,format=raw
+ -bios $(BIOS) -M q35 -cdrom $(BOOT) -boot d -accel kvm
endif
LD_FLAGS=-e Main --subsystem=10
@@ -96,11 +94,12 @@ all: compile-amd64
$(COPY) src/$(BOOTLOADER) src/Root/$(BOOTLOADER)
xorriso -as mkisofs \
-iso-level 3 \
- -r -V NeOS \
- -J -joliet-long \
- -append_partition 2 0xef src/Root/EFI/BOOT/BOOTX64.EFI \
- -partition_cyl_align all \
+ -full-iso9660-filenames \
+ -volid "NEOS_ISO" \
-o $(BOOT) \
+ -e EFI/BOOT/BOOTX64.EFI \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -no-emul-boot -isohybrid-gpt-basdat \
src/Root/
diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
index f2e0fda5..f36b8e28 100644
--- a/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
+++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI.cc
@@ -20,6 +20,8 @@
#include <KernelKit/UserProcessScheduler.h>
#include <KernelKit/LPC.h>
+#include <FirmwareKit/EPM.h>
+
#include <Mod/ATA/ATA.h>
#include <Mod/AHCI/AHCI.h>
#include <KernelKit/PCI/Iterator.h>
@@ -138,9 +140,9 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz
for (; i < (command_header->Prdtl - 1); i++)
{
- command_table->Prdt[i].Dba = ((UInt32)(UInt64)buffer_phys);
- command_table->Prdt[i].Dbau = (((UInt64)(buffer_phys) >> 32));
command_table->Prdt[i].Dbc = ((size_buffer / command_header->Prdtl - 1) - 1);
+ command_table->Prdt[i].Dba = ((UInt32)(UInt64)buffer_phys + (i * command_table->Prdt[i].Dbc));
+ command_table->Prdt[i].Dbau = (((UInt64)(buffer_phys) >> 32) + (i * command_table->Prdt[i].Dbc));
command_table->Prdt[i].Ie = YES;
}