From 68c7b52192475418f20db2243d8f15e6a76929ab Mon Sep 17 00:00:00 2001 From: fslongjin Date: Thu, 7 Apr 2022 16:12:23 +0800 Subject: [PATCH] bug fix --- kernel/common/printk.c | 2 +- kernel/driver/disk/ahci/ahci.c | 1 + kernel/smp/smp.c | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/common/printk.c b/kernel/common/printk.c index 9a6be72a..27547fa2 100644 --- a/kernel/common/printk.c +++ b/kernel/common/printk.c @@ -36,7 +36,7 @@ int printk_init(const int char_size_x, const int char_size_y) // @todo:将来需要将帧缓冲区物理地址填写到这个地址的页表项中 VBE_FB_phys_addr = (ul)info.framebuffer_addr; pos.FB_address = (uint *)0x0000000003000000; - pos.FB_length = pos.width * pos.height; + pos.FB_length = 1UL*pos.width * pos.height; // ======== 临时的将物理地址填写到0x0000000003000000处 之后会在mm内将帧缓存区重新映射===== diff --git a/kernel/driver/disk/ahci/ahci.c b/kernel/driver/disk/ahci/ahci.c index abc84302..a8aae72c 100644 --- a/kernel/driver/disk/ahci/ahci.c +++ b/kernel/driver/disk/ahci/ahci.c @@ -37,6 +37,7 @@ void ahci_init() ahci_devices[i].dev_struct = ahci_devs[i]; ahci_devices[i].hba_mem = (HBA_MEM *)(cal_HBA_MEM_VIRT_ADDR(i)); } + // todo: 支持多个ahci控制器。 ahci_port_base_vaddr = (uint64_t)kmalloc(1048576, 0); ahci_probe_port(0); port_rebase(&ahci_devices[0].hba_mem->ports[0], 0); diff --git a/kernel/smp/smp.c b/kernel/smp/smp.c index 82b01927..d23d8341 100644 --- a/kernel/smp/smp.c +++ b/kernel/smp/smp.c @@ -34,8 +34,10 @@ void smp_init() icr_entry.res_2 = 0; icr_entry.res_3 = 0; - for (int i = 1; i < 2; ++i) // i从1开始,不初始化bsp + for (int i = 1; i < total_processor_num; ++i) // i从1开始,不初始化bsp { + if(proc_local_apic_structs[i]->ACPI_ID==0) + continue; current_starting_cpu = i; icr_entry.vector = 0x00;