Hi, This patch fixes a bug consisting that, during startup, the determination of cpu class was done AFTER it was needed by some functions. The patch also reorganizes the startup code that was scattered among several files. Greetings, Juan 2. Variable "arch_cpu" was initialized in function "setup_mm". This variable is needed in function "init_IRQ". However, during startup function "init_IRQ" was called before function "setup_mm". 3. In file "arch/i86/kernel/system.c" there was a FIXME note stating that "setupw expects TWO parameters". Actually, that function expects one parameter. 4. Functions "setupw" and "setupb" are almost identical. The only difference is that setupb returns "char" and the 8 most significant bits of register ax are set to zero. NEW OPERATION 1. The architecture independent initialization of task array was moved to function "sched_init". The remaining architecture dependent code was concentrated in function "setup_arch". The call to function "sched_init" is now the first in the startup process. 2. Initialization of variable "arch_cpu" was moved to function "setup_arch". 3. Fixed references to function "setupw" usage. 4. Removed function "setupb". It was replaced with a macro consisting of a call to "setupw" casted to char, saving ~20 bytes. OTHER CHANGES 1. A small optimization to reduce code size was done in files irq.c, irqtab.c and mkentry.sh. There is a reduction in code size of 32 bytes. The Image builded without errors. The kernel was tested with QEMU and dioscuri emulators. Also in a PPro pc booting from floppy.
Attachment:
elksJ.patch
Description: Binary data