fslongjin 2 years ago
parent
commit
68c7b52192
3 changed files with 5 additions and 2 deletions
  1. 1 1
      kernel/common/printk.c
  2. 1 0
      kernel/driver/disk/ahci/ahci.c
  3. 3 1
      kernel/smp/smp.c

+ 1 - 1
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内将帧缓存区重新映射=====
 

+ 1 - 0
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);

+ 3 - 1
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;