After this talk, I agree with Damien about the cpu enumeration (reading from ACPI tables), must be implemented in gnumach.
But my question is, how can I avoid the dirty addressing currently in use?
Currently, the APIC table is read before configure paging, to avoid paging restrictions when I access to this memory space.
But this cause another problem: the lapic is mapped in a very high address (upper to 0x7000), and is unreachable in this moment.
In my solution, I take notes about the lapic address and wait until paging is enabled to map this address. But this is a dirty solution, in my opinion.
Are there any other solution for this?
Furthermore, I create many global variables that, talking with Richard, he told me that is a bad practice.
How can I solve this problem?