[comp.os.minix] Evans Minix Kernel - problem report

bob@dhw68k.cts.com (Bob Best) (05/26/89)

I have managed to compile the Evans protected mode minix kernel
using the 1.1 compiler binaries.  I had major problems with /lib/cpp
on the *.x files which I finally processed using Xenix.  Unfortunately,
although the kernel boots and runs, it eventually panics and aborts
with a 'panic - MM can't reply' message.  While the system is running,
I am receiving messages of the form 'tty_reply return status is ...'
Bruce, if you or any other hacker out there has a clue, please post
your suggestions.  I don't trust the code generated by the 1.1 compiler,
but I have used it to compile all previous versions of Minix.  All the
sources used were verified successfully against the crc lists.
-- 
Bob Best
uucp: {spsd, zardoz, felix}!dhw68k!bob	InterNet: bob@dhw68k.cts.com

bob@dhw68k.cts.com (Bob Best) (05/28/89)

In article <23213@dhw68k.cts.com> I wrote:
>I have managed to compile the Evans protected mode minix kernel
>using the 1.1 compiler binaries.  I had major problems with /lib/cpp
>on the *.x files which I finally processed using Xenix.
The problem is that 1.1 cpp does not remove C comments from the output.
If you use this binary, you should remove the comments from the .x files
before processing.

>Unfortunately,
>although the kernel boots and runs, it eventually panics and aborts
>with a 'panic - MM can't reply' message.  While the system is running,
>I am receiving messages of the form 'tty_reply return status is ...'
>Bruce, if you or any other hacker out there has a clue, please post
>your suggestions.  I don't trust the code generated by the 1.1 compiler,
>but I have used it to compile all previous versions of Minix.
The problem is in the p2_s_call and s_call functions in mpx286.x and mpx88.x,
respectively.  I will be posting unofficial patches, but the fix requires
saving the si register prior to 'call _sys_call' in both of these procedures.
The 1.1 compiler was NOT preserving the si register on function calls.
For example, use the following:
	push si
	push bx
	push ax
	push cx
	call _sys_call
	add  sp,#6
	pop  si
	mov  AXREG(si),ax

The moral of all of this is quite simple:  Using the 1.1 compiler is
bound to leave you chasing bugs that don't exist.

-- 
Bob Best
uucp: {spsd, zardoz, felix}!dhw68k!bob	InterNet: bob@dhw68k.cts.com