Large cummulative patch for pic16 port.
[fw/sdcc] / device / include / pic16 / malloc.h
1 /*
2  * malloc.h - dynamic memory allocation header
3  *
4  * written by Vangelis Rokas, 2004 (vrokas@otenet.gr)
5  *
6  */
7
8 /*
9 ** $Id$
10  */
11  
12
13 /*
14  * Structure of memory block header:
15  * bit 7 (MSB): allocated flag
16  * bits 0-6: pointer to next block (max length: 126)
17  *
18  */
19
20
21 #ifndef __MALLOC_H__
22 #define __MALLOC_H__
23
24 #define EMULATION       0
25
26 #if EMULATION
27 #define malloc  pic16_malloc
28 #define free    pic16_free
29 #define realloc pic16_realloc
30 #define calloc  pic16_calloc
31 #endif
32
33
34 #define MAX_BLOCK_SIZE  0x7f            /* 126 bytes */
35 #define MAX_HEAP_SIZE   0x200           /* 512 bytes */
36 #define _MAX_HEAP_SIZE  (MAX_HEAP_SIZE-1)
37
38 #define ALLOC_FLAG              0x80
39 #define HEADER_SIZE             1
40
41
42 typedef union {
43         unsigned char datum;
44         struct {
45                 unsigned count: 7;
46                 unsigned alloc: 1;
47         } bits;
48 } _malloc_rec;
49
50
51 unsigned char *malloc(unsigned char);
52 void free(unsigned char *);
53 unsigned char *calloc(unsigned char num);               //, unsigned char len);
54 unsigned char *realloc(unsigned char *mblock, unsigned char len);
55
56
57 #endif /* __MALLOC_H__ */
58
59