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