Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!bloom-beacon!usc!orion.cf.uci.edu!uci-ics!zardoz!dhw68k!bob From: bob@dhw68k.cts.com (Bob Best) Newsgroups: comp.os.minix Subject: Re: Evans Minix Kernel - problem report Summary: problem is with 1.1 compiler w/ fix Message-ID: <23267@dhw68k.cts.com> Date: 28 May 89 07:47:28 GMT References: <23213@dhw68k.cts.com> Reply-To: bob@dhw68k.cts.com (Bob Best) Organization: Wolfskill & Dowling residence; Anaheim, CA (USA) Lines: 35 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