]> andersk Git - moira.git/blob - server/meinitlst.c
Initial revision
[moira.git] / server / meinitlst.c
1 /*
2  *      $Source$
3  *      $Author$
4  *      $Header$
5  *
6  *      Copyright (C) 1987 by the Massachusetts Institute of Technology
7  *
8  *      This code is a reverse-engineered version of
9  *      ~rtingres/lib/compatlib(meinitlst.o) with a better malloc and
10  *      free.
11  *      $Log$
12  *      Revision 1.1  1987-08-22 17:29:33  wesommer
13  *      Initial revision
14  *
15  */
16
17 #ifndef lint
18 static char *rcsid_meinitlst_c = "$Header$";
19 #endif lint
20
21 #include <sys/errno.h>
22 #include <sys/types.h>
23
24 /*
25  * entry points:
26  *      MEinitLists()
27  *      calloc()
28  *      free()
29  *      malloc()
30  *      memalign()
31  *      realloc()
32  *      valloc()
33  */
34
35 struct cons {
36         char *car;
37         char *cdr;
38 };
39 extern int Status;
40 extern char MEsetup;
41 extern struct cons MElist, MEfreelist;
42 extern short ME_pid;
43 extern char *MElistHead, *MEfreeHead;
44
45 MEinitLists()
46 {
47         Status = 0;
48         MEsetup = 1;
49         MElist.car = 0;
50         MElist.cdr = MElistHead;
51         MEfreelist.car = 0;
52         MEfreelist.cdr = MEfreeHead;
53         ME_pid = getpid() & 0x7fff;
54         return 0;
55 }
56 #ifdef notdef
57 free(addr)
58 {
59         return MEfree(addr);
60 }
61
62 caddr_t malloc(size)
63         u_int size;
64 {
65         char *temp;
66         if(MEalloc(1, size, &temp)) return 0;
67         else return temp;
68 }
69
70 caddr_t calloc(a1, a2)
71         int a1, a2;
72 {
73         char *temp;
74         if (MEcalloc(a1, a2, &temp)) return 0;
75         else return temp;
76 }
77
78 caddr_t realloc(adr, nsize)
79         char *adr;
80         u_int nsize;
81 {
82         char *new_addr;
83         u_int cur_size;
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);
88         (void) free(adr);
89         return new_addr;
90 }
91 #endif notdef
92 #ifdef notdef
93 valloc(size)
94         int size;
95 {
96         static int pagesize;
97         if (pagesize == 0) pagesize = getpagesize();
98         return memalign(pagesize, size);
99 }
100
101 memalign(alignment, size)
102 {
103         int temp1;
104         int temp2;
105         int temp3;
106         int temp4;
107         if (!size || alignment & 1) {
108                 errno = EINVAL;
109                 return 0;
110         }
111         if (alignment < 4) alignment = 4;
112
113 /*
114 _memalign:      fc0
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
121 _memalign+17:   ret
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
155 _memalign+a6:   ret
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
168 _memalign+e3:   ret
169 */
170 #endif notdef
This page took 0.045969 seconds and 5 git commands to generate.