00001
00007
00008
00009 #include <kernel.h>
00010
00011 extern char *maxheap;
00012 extern void *end;
00013
00019 void *getstk(ulong nbytes)
00020 {
00021
00022
00023
00024
00025 ulong newstk;
00026
00027 if (nbytes == 0)
00028 { return( (void *)SYSERR ); }
00029
00030 nbytes = (nbytes + 15) & ~0x0F;
00031
00032 if ((long)maxheap - nbytes < (int)&end)
00033 { return( (void *)SYSERR ); }
00034
00035 newstk = (ulong)maxheap - 4;
00036 maxheap = (char *)(((int)maxheap) - nbytes);
00037
00038 return ((void *)newstk);
00039 }