Aros/平臺/x86 64 支援
從 2007 年 11 月開始,AROS 獲得了 64 位移植版本。它缺乏軟體和驅動程式支援,但有一些 AROS 從未擁有的新功能 - 一種記憶體保護機制和
AROS x86_64 針對新的 PC 系統,包括 AMD 和英特爾處理器。您也可以在 QEMU 模擬器中嘗試此埠,使用其 64 位模式。請注意,可以使用來自 x86 的 PCI 卡和其他內容,因此此頁面主要用於 CPU/晶片組/筆記型電腦支援。
筆記型電腦
主機板
- VMWare Virtual PC。
- ECS 755-A2 配備 Athlon 64 CPU。
- 從 SIS5513 IDE 控制器上的 CD 啟動。此主機板具有 SATA SIS180 控制器,帶有
- 1 個 PATA 和 2 個 SATA 通道。但是,在硬碟上安裝失敗,顯示
- “未知錯誤 100”訊息。(請新增測試日期...... 2008 年 8 月 20 日 17:10(UTC))
- Shuttle
顯示卡
音效卡
網路介面卡
筆記型電腦
- 宏碁 Aspire 5101AWLMi(AMD Turion 64 MK-36 - 2 GHz,512KB L2 快取,ATI Xpress 1100 晶片組,1Gb DDR2-533 MHz,ATI Mobility Radeon x1300,15.4" TFT(1280 x 800),無線區域網:802.11b/g)
- 正常啟動。影片(vesa/vga)和觸控板/USB 滑鼠正常工作。AHI 首選項會掛起系統。在軟體啟動時會隨機掛起。
主機板
顯示卡
音效卡
網路介面卡
- 英特爾千兆網絡卡 - 驅動程式尚未完成...... 請參閱網路文件。
筆記型電腦
主機板
顯示卡
音效卡
網路介面卡
目前我甚至無法再次測試它,因為它在引導載入程式中崩潰了 -
[BOOT] Entered AROS Bootstrap @ 001100d0 [BOOT] Stack @ 00116e40, [65536 bytes] [BOOT] Multiboot structure @ 011271b0 [BOOT] Command line @ 01127228 : 'vesa=1024x768x16 ATA=32bit nomonitors debug=serial' [BOOT] Memory map at 0x011272d0, length 288 [BOOT] Low memory 638 KB, upper memory 522176 KB [BOOT] Backing up low memory, buffer at 0x001271a0 [BOOT] setupVESA: vesa.bin @ 001155dc [size=6197] [BOOT] setupVESA: BestModeMatch for 1024x768x16 =
這是顯示的所有內容,然後機器重新啟動。
仔細檢查 VESA 程式碼。在引導重構期間,某些內容可能已損壞。我無法測試 VESA 程式碼,因為我在 Mac 上測試,EFI 在原生模式下不提供 PC BIOS API。而且,如果這是最近出現的,請檢查嵌入式 16 位程式碼的連結方式。Jason 對 %rule_link_binary 做了修改,也許這就是原因。此外,您可以透過在 VGA 或原生顯示模式下執行來解決此問題。
acpi.resource 的開頭。目前它只嘗試定位 RSDP。在掃描 EBDA 時會由於頁面錯誤而崩潰。即使在 SuperState()/UserState() 內執行也是如此。這些函式本身可以正常工作,測試證實了這一點。此外,processor.resource 成功查詢了 CPU 速度。
MMU 表中的“存在”標誌也會影響主管模式,它被設定為“0”。但是目前我已經轉向切換到 Multiboot V2。在 EFI 環境中,您需要一個指向 EFI 系統表的指標才能檢索 RSDP。既沒有提供 EBDA 也沒有提供 BIOS 映像(掃描失敗)。順便說一下,我已經提交了我的 WIP 程式碼(那裡沒有太多內容,只是一個 RSDP 定位器)。
研究了 AMD 的手冊,64 位模式非常簡單,我只在 CS 中有一個帶有特權級別的描述符,僅此而已。也許我在 MMU 表中有什麼錯誤?您可以檢查程式碼,它是最新的,除了 acpi.resource 框架外,我沒有未提交的部分。此外,processor.resource 必須在每個核心上呼叫 CPU 檢測程式碼以收集資訊。但是,此程式碼是否可以在 kernel.resource 之前執行?IMO,它應該在當前位置(在核心資源中)執行,因為它直接與核心資源控制的系統資源進行互動。嘗試將所有內容都移出來只會增加程式碼重複/不必要的膨脹。一直設想 kernel.resource 設定核心,然後有一個函式允許在特定核心上執行程式碼。 processor.resource 使用此函式執行核心功能檢測程式碼。
想法是
- acpi.resource RTF_COLDSTART Pri=125 - 解析 ACPI 表。
- processor.resource 啟動其他 CPU。它有自己的引導程式碼供它們使用。此程式碼呼叫 InitCode(RTF_SINGLETASK)。
- kernel.resource 檢測輔助 CPU 並中斷 InitCode()。
它提供了什麼
- 對模組私有資料的獨立性。
- 模組化,作為結果。
- 當輔助 CPU 啟動時,我們已經擁有了工作的核心甚至執行環境。
例如,在排程程式碼中只使用儲存在 TLS 中的 thisTask 版本(這樣不同的核心就會看到它們自己正確的版本),使用 apic 本地計時器新增任務執行時間(基於 sam440 的做法......)並嘗試稍微整理一下 APIC/IPI 程式碼,但我目前無法檢查它的工作效果如何。
acpi.resource 在 SINGLETASK 級別初始化。所有 SINGLETASK 常駐程式完成之後,InitCode() 返回到引導程式碼。這允許執行額外的設定,無論需要什麼。多工在 exec.library 中啟動,它是第一個 COLDSTART 常駐程式。此外,SINGLETASK 使用主管特權呼叫,這消除了額外的混亂。這與原始 AmigaOS 引導順序非常接近。並且允許將硬體控制組件與核心完全分離。
此外,processor.resource 成功查詢了 CPU 速度。研究了 AMD 的手冊,64 位模式非常簡單,我只在 CS 中有一個帶有特權級別的描述符,僅此而已。也許我在 MMU 表中有什麼錯誤?您可以檢查程式碼,它是最新的,除了 acpi.resource 框架外,我沒有未提交的部分。此外,processor.resource 必須在每個核心上呼叫 CPU 檢測程式碼以收集資訊。但是,此程式碼是否可以在 kernel.resource 之前執行?IMO,它應該在當前位置(在核心資源中)執行,因為它直接與核心資源控制的系統資源進行互動。嘗試將所有內容都移出來只會增加程式碼重複/不必要的膨脹。一直設想 kernel.resource 設定核心,然後有一個函式允許在特定核心上執行程式碼。 processor.resource 使用此函式執行核心功能檢測程式碼。