pedz@bobkat.UUCP (Pedz Thing) (01/12/87)
I have brought up gnu emacs version 18.35 up on an intergrated
solutions Optimum V16 System running 4.2 BSD UNIX Release 3.05.
I had to change the m-isi-ov.h file slightly to get the alloca routine
from the system to be used. I then discovered that this routine was
buggy so I wrote my own. The difference is that the returned value
pointed 4 bytes too low. Below is the diff and the new alloca. I
suggest that you just replace the alloca in the libc.a so that other
programs may use it as well.
*** m-isi-ov.h Fri Jan 9 16:16:01 1987
--- m-isi-ov.h.old Fri Jan 9 16:03:08 1987
***************
*** 62,82
/* Mask for address bits within a memory segment */
#define SEGMENT_MASK 0x3ffff
-
- /* use the -20 switch to get the 68020 code */
- /* use the 68881 so also add the -f switch */
- #define C_SWITCH_MACHINE -20 -f
-
- /* No point to have debugging since it does not work. */
- #define C_DEBUG_SWITCH
- #define LIBS_DEBUG
-
- /* Define C_ALLOCA if this machine does not support a true alloca
- and the one written in C should be used instead.
- Define HAVE_ALLOCA to say that the system provides a properly
- working alloca function and it should be used.
- Define neither one if an assembler-language alloca
- in the file alloca.s should be used. */
-
- #undef C_ALLOCA
- #define HAVE_ALLOCA
--- 62,64 -----
/* Mask for address bits within a memory segment */
#define SEGMENT_MASK 0x3ffff
------------------------- alloca.s ----------------------------------------
/*
* alloca for the intergrated solutions which works.
* Written by Perry Smith (pedz@bobkat)
*/
.globl _alloca
_alloca:
movl sp@+,a0
movl a7,d0
subl sp@,d0
andl #~3,d0
movl d0,sp
tstb sp@(0)
addql #4,d0
jmp a0@
--
Perry Smith
{convex!ctvax,{ti-csl,infotel}!pollux}!bobkat!pedz