mullen@sdsu.UUCP (deborah mullen) (03/11/89)
This is a strange one. For my own reasons I want to build a kernel with NR_CONS in tty.h defined to be 2 instead of 1. Building a kernel with ONLY this change in the offical 1.3 sources ( all crcs match) does not work. I have thus far determined that control does not return (with a kernel built with NR_CONS = 2) from the last call in init_rs232 to port_out. The specific call is: port_out(rs->rs_base + RS232_INTERRUPTS, RS232_INTERRUPT_CLASSES); It returns from the call to port_out just before this statement. All calls to port_out in the rs232 module have the same values as those made with by a kernel built with NR_CONS = 1; If this one line is commented out, then minix comes up with a login. I have modified tty.c to call init_rs232() before tty_init(). The results were the same, no return from that specific port_out call. I have built this bum kernel both under MINIX and under DOS with Turbo C with the same results. There is a slight difference in the code size between a kernel with NR_CONS = 1 and a kernel with NR_CONS = 2. This seems to be because the compiler optimizes with the "1" constant by decrementing a register as opposed to subtracting a constant. It makes no differnce with this problem if kernel is combined or separate I&D. Also no difference was noted when the values for K_STACK_BYTES were made the same in both mpx88.s and kernel/const.h. Changing K_STACK_BYTES to a larger number or the stack allocated to the tty task from 256 to 512 made no difference. I am out of things to try. Any help/ideas appreciated. --Deborah Mullen