6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
8 * This code is a reverse-engineered version of
9 * ~rtingres/lib/compatlib(meinitlst.o) with a better malloc and
12 * Revision 1.1 1987-08-22 17:29:33 wesommer
18 static char *rcsid_meinitlst_c = "$Header$";
21 #include <sys/errno.h>
22 #include <sys/types.h>
41 extern struct cons MElist, MEfreelist;
43 extern char *MElistHead, *MEfreeHead;
50 MElist.cdr = MElistHead;
52 MEfreelist.cdr = MEfreeHead;
53 ME_pid = getpid() & 0x7fff;
66 if(MEalloc(1, size, &temp)) return 0;
70 caddr_t calloc(a1, a2)
74 if (MEcalloc(a1, a2, &temp)) return 0;
78 caddr_t realloc(adr, nsize)
84 if (MEsize(adr, &cur_size)) return 0;
85 if (cur_size >= nsize) return adr;
86 if ( (new_addr = malloc(nsize)) == 0) return 0;
87 (void) MEcopy(adr, cur_size, new_addr);
97 if (pagesize == 0) pagesize = getpagesize();
98 return memalign(pagesize, size);
101 memalign(alignment, size)
107 if (!size || alignment & 1) {
111 if (alignment < 4) alignment = 4;
115 _memalign+2: subl2 $10,sp
116 _memalign+5: tstl 8(ap)
117 _memalign+8: beql _memalign+e
118 _memalign+a: blbc 4(ap),_memalign+18
119 >_memalign+e: movl $16,_errno
120 >_memalign+15: clrf r0
122 >_memalign+18: cmpl 4(ap),$4
123 _memalign+1c: bgequ _memalign+22
124 _memalign+1e: movl $4,4(ap)
125 >_memalign+22: pushl $4
126 _memalign+24: addl3 $3,8(ap),-(sp)
127 _memalign+29: calls $2,udiv
128 _memalign+30: ashl $2,r0,8(ap)
129 _memalign+35: addl3 4(ap),8(ap),r0
130 _memalign+3b: addl3 $20,r0,-4(fp)
131 _memalign+40: pushl -4(fp)
132 _memalign+43: calls $1,_malloc
133 _memalign+4a: movl r0,r11
134 _memalign+4d: beql _memalign+15
135 _memalign+4f: subl3 $10,r11,r10
136 _memalign+53: ashl $0,4(r10),r8
137 _memalign+58: pushl 4(ap)
138 _memalign+5b: subl3 $1,4(ap),r0
139 _memalign+60: addl3 r11,r0,-(sp)
140 _memalign+64: calls $2,udiv
141 _memalign+6b: mull3 4(ap),r0,-c(fp)
142 _memalign+71: movl -c(fp),r7
143 _memalign+75: subl3 $10,r7,r6
144 _memalign+79: subl3 r10,r6,-8(fp)
145 _memalign+7e: subl2 -8(fp),r8
146 _memalign+82: cmpl -8(fp),$10
147 _memalign+86: bgequ _memalign+a7
148 _memalign+88: pushl 8(ap)
149 _memalign+8b: pushl 4(ap)
150 _memalign+8e: calls $2,_memalign
151 _memalign+95: movl r0,-10(fp)
152 _memalign+99: pushl r11
153 _memalign+9b: calls $1,_free
154 _memalign+a2: movl -10(fp),r0
156 >_memalign+a7: movl -8(fp),r0
157 _memalign+ab: extzv $0,$20,r0,4(r10)
158 _memalign+b1: extzv $0,$20,r8,4(r6)
159 _memalign+b7: movl (r10),(r6)
160 _memalign+ba: movw 8(r10),8(r6)
161 _memalign+bf: movl r6,_MElist
162 _memalign+c6: cmpl _MElist+4,r10
163 _memalign+cd: bneq _memalign+d6
164 _memalign+cf: movl r6,_MElist+4
165 >_memalign+d6: pushl r10
166 _memalign+d8: calls $1,_MEf_add
167 _memalign+df: addl3 $10,r6,r0