-
Recently, I was looking for ACPI examples. Tilck completely conforms to my imagination of the operating system. It is friendly and unified cmake and modern efi, which is very close to the real environment. The only downside is that it's still 32-bit. There are very few 32-bits in real environments, it's not modern enough. I see that the CMakefile.txt has x64 compilation mode, does it support long mode now? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Hello @Jamlee, I'm glad that you appreciate the project. Porting Tilck to x86-64 is in the roadmap and is one of the top priorities for the project, but at the moment it's far from ready. The noarch code complies for x86-64, the early assembly code in start.S has been re-written for x86-64, Tilck enters in the C main function, do a few things and then panic gracefully with an error because most of the x86-64 code has not been implemented yet. The next step would be to implement paging, then IRQ support with the APIC, context switch logic, kernel threads, low-level syscall interface, and then start porting all the syscalls to x86-64 as well, reusing as much code as possible. It's a lot of work. However, it's worth noticing that even if the 32-bit support will be removed from the Intel CPUs in the next few years, at the moment all the current x86-64 CPUs do support 32-bit mode, even the pure UEFI machines. I've tested Tilck primarily on such machines. So, if you're looking to do OSDEV on real x86-64, you can do that with Tilck today and use real, modern laptops or mini-PCs. The fact that it's all 32-bit and you cannot use more than 896 MB of memory shouldn't be a real limitation, in practice. You can even use AVX 2 and most of the other fancy features of new CPUs, in theory. Just, it's 32-bit code, pointers are 4 bytes, the virtual memory is limited and physical memory as well. Also, there is no SMP in i386, but Tilck won't support that in x86-64 anyways so... that doesn't make much of a difference. The biggest reason for me to support x86-64 is that i386 will be completely dead in a few years as Intel will stop supporting it in the CPUs and the software world will follow once Linux decides to cut off that architecture as well. Timeline for x86-64: Since my full-time job takes almost all of my time and energies, I rarely work on the project, at least at the moment. Therefore, I cannot give you any timelines for when Tilck will fully support x86-64. Given my limited progress, it will take a few years to complete, I guess. I hope to make it in time before i386 is completely dead. |
Beta Was this translation helpful? Give feedback.
Hello @Jamlee, I'm glad that you appreciate the project. Porting Tilck to x86-64 is in the roadmap and is one of the top priorities for the project, but at the moment it's far from ready. The noarch code complies for x86-64, the early assembly code in start.S has been re-written for x86-64, Tilck enters in the C main function, do a few things and then panic gracefully with an error because most of the x86-64 code has not been implemented yet. The next step would be to implement paging, then IRQ support with the APIC, context switch logic, kernel threads, low-level syscall interface, and then start porting all the syscalls to x86-64 as well, reusing as much code as possible. It's a lot of …