Dropping support for secondary ata bus temporarily

This commit is contained in:
notsomeidiot123 2026-02-28 20:07:31 -05:00
parent f9b550b006
commit 1062bd43c7
3 changed files with 33 additions and 36 deletions

View File

@ -19,7 +19,7 @@ all: bootloader tools kernel
# sudo mkdir mount/sys # for system files
# ./diskwrite -v -o image.bin
# ./diskwrite -v -l kernel.elf idm.elf -o image.bin
qemu-system-i386 -hda image.bin -hdb test.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int
qemu-system-i386 -hda image.bin -hdc test.bin --no-reboot --no-shutdown -m 32m -smp 2 -serial mon:stdio -D intlog.txt -d int
sudo umount mount
tools:

View File

@ -28,7 +28,7 @@ uint32_t module_api(uint32_t func, ...){
vector_push(modules, structure);
pm_free(tmp);
return_value = 0;
printf("vector size -> %d", structure->key);
// printf("vector size -> %d", structure->key);
break;
case MODULE_API_ADDINT:
uint32_t int_index = va_arg(vars, uint32_t);

View File

@ -510,8 +510,8 @@ uint8_t ata_identify(uint32_t index, uint16_t disk){
itoa(ata_drives, fname + strlen(fname), 10);
vfile_t *new_file = fcreate(api, fname, VFILE_DEVICE, ata_write, ata_read);
new_file->mount_id = index;
// free(api, fname);
return 1;
puts(api, "KIDM", "Valid Drive!\n");
return 0;
}
void ide_init(uint32_t BARS[5]){
@ -521,49 +521,46 @@ void ide_init(uint32_t BARS[5]){
}
drives[primary_index].type = TYPE_TMP;
uint32_t primary_slave_index = find_free_drive();
if(primary_slave_index == -1){
return;
}
if(primary_slave_index != -1){
drives[primary_slave_index].type = TYPE_TMP;
uint32_t secondary_index = find_free_drive();
if(secondary_index == -1){
return;
}
drives[secondary_index].type = TYPE_TMP;
uint32_t secondary_slave_index = find_free_drive();
if(secondary_slave_index == -1){
return;
}
drives[secondary_slave_index].type = TYPE_TMP;
// uint32_t secondary_index = find_free_drive();
// if(secondary_index != -1){
// drives[secondary_index].type = TYPE_TMP;
// }
// uint32_t secondary_slave_index = find_free_drive();
// if(secondary_slave_index != -1){
// drives[secondary_slave_index].type = TYPE_TMP;
// }
for(int i = 0; i < 2; i++){
drives[primary_index].BARs[i] = BARS[i];
drives[primary_slave_index].BARs[i] = BARS[i];
drives[secondary_index].BARs[i] = BARS[i+2];
drives[secondary_slave_index].BARs[i] = BARS[i+2];
// drives[secondary_index].BARs[i] = BARS[i+2];
// drives[secondary_slave_index].BARs[i] = BARS[i+2];
}
drives[primary_index].BARs[4] = BARS[4];
drives[primary_slave_index].BARs[4] = BARS[4];
drives[primary_slave_index].flags.slave = 1;
drives[secondary_index].BARs[4] = BARS[4];
drives[secondary_slave_index].BARs[4] = BARS[4];
drives[secondary_slave_index].flags.slave = 1;
// drives[secondary_index].BARs[4] = BARS[4];
// drives[secondary_slave_index].BARs[4] = BARS[4];
// drives[secondary_slave_index].flags.slave = 1;
//now call ATA IDENTIFY
uint8_t master_status = ata_identify(primary_index, ATA_MASTER);
uint8_t slave_status = ata_identify(primary_slave_index, ATA_SLAVE);
if(!master_status){
if(master_status == -1){
drives[primary_index].type = TYPE_NULL;
}
if(!slave_status){
if(slave_status == -1){
drives[primary_slave_index].type = TYPE_NULL;
}
master_status = ata_identify(secondary_index, ATA_MASTER);
slave_status = ata_identify(secondary_slave_index, ATA_SLAVE);
if(!master_status){
drives[secondary_index].type = TYPE_NULL;
}
if(!slave_status){
drives[secondary_slave_index].type = TYPE_NULL;
}
// master_status = ata_identify(secondary_index, ATA_MASTER);
// slave_status = ata_identify(secondary_slave_index, ATA_SLAVE);
// if(master_status == -1){
// drives[secondary_index].type = TYPE_NULL;
// }
// if(slave_status == -1){
// drives[secondary_slave_index].type = TYPE_NULL;
// }
// outb(BARS[4] >> 1, 0x0);
// int volatile tt = 0;
// while(tt < 50000){
@ -601,10 +598,10 @@ void init(KOS_MAPI_FP module_api, uint32_t api_version){
BARs[0] = (ATA_PRIMARY_BUS) | 1;
BARs[1] = (ATA_PRIMARY_BUS + 0x206) | 1;
}
if(PCI_IDE_SECONDARY_NATIVE(~progif)){
BARs[2] = (ATA_SECONDARY_BUS) | 1;
BARs[3] = (ATA_SECONDARY_BUS + 0x206) | 1;
}
// if(PCI_IDE_SECONDARY_NATIVE(~progif)){
// BARs[2] = (ATA_SECONDARY_BUS) | 1;
// BARs[3] = (ATA_SECONDARY_BUS + 0x206) | 1;
// }
ide_init(BARs);
}
}