Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
; Enable specific interrupts
in al, 0x21
mov al, 11111001b ; Enable Cascade, Keyboard
out 0x21, al
in al, 0xA1
mov al, 11111110b ; Enable RTC
out 0xA1, al
Everything checked out on my 16-core AMD but a 32-core and 64-core both reboot. It does seem that the Timer interrupt works correctly in Pure64 so I know the PIC is ok. The code above is from BareMetal OS.
Thanks,
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
What do the ACPI tables say with regards to the machine's legacy hardware?
Its entirely plausible that the machine only has enough PIC support to pretend to the legacy BIOS code that there's a timer, and that the machine doesn't even claim to have a keyboard controller, etc.
Particularly the missing keyboard controller is a good one. Many machines, I/O to the conventional keyboard controller port will do nasty things to the embedded controller.
This was kernel code and any change to the PIC mask caused a reboot. I was using Pure64 v0.4.9 and have now switched over to v0.5.1 (which uses the IO-APIC for interrupts instead of the PIC). Everything seems to be working now on the 32-core. I will test the 64-core later.
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly