OpenCores
URL https://opencores.org/ocsvn/igor/igor/trunk

Subversion Repositories igor

[/] [igor/] [trunk/] [avr/] [eth-test/] [encdec.h] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 atypic
#ifndef _ENCDEC_H_
2
#define _ENCDEC_H_
3
 
4
uint32_t encode_object(uint32_t, uint32_t);
5
uint32_t decode_object(uint32_t, uint32_t, uint8_t *);
6
 
7
#define TYPE_NONE       0x0
8
#define TYPE_INT        0x1
9
#define TYPE_FLOAT      0x3
10
#define TYPE_CONS       0x4
11
#define TYPE_SNOC       0x5
12
#define TYPE_PTR        0x6
13
#define TYPE_ARRAY      0x7
14
#define TYPE_NIL        0x8
15
#define TYPE_T          0x9
16
#define TYPE_CHAR       0xA
17
#define TYPE_SYMBOL     0xB
18
#define TYPE_FUNCTION   0xC
19
#define TYPE_BUILTIN    0xD
20
#define SIZE_INT        26
21
#define BSIZE_INT       (SIZE_INT + 2)
22
#define SIZE_CHAR       8
23
#define BSIZE_CHAR      (SIZE_CHAR + 2)
24
 
25
// size and position of the parts of an object
26
#define OBJECT_DATUM_OFFSET 0
27
#define OBJECT_DATUM_MASK 0x3FFFFFF
28
#define OBJECT_TYPE_OFFSET 26
29
#define OBJECT_TYPE_MASK 0x1F
30
#define OBJECT_GC_OFFSET 31
31
#define OBJECT_GC_MASK 0x1
32
 
33
 
34
#define OBJECT_NEW(type, datum)                                         \
35
        ((((uint32_t)(type) << OBJECT_TYPE_OFFSET)&0x7C000000) |        \
36
        ((datum)&OBJECT_DATUM_MASK))
37
#define OBJECT_TYPE(obj) \
38
        (((uint32_t)(obj)>>OBJECT_TYPE_OFFSET) & OBJECT_TYPE_MASK)
39
#define OBJECT_DATUM(obj) ((obj) & OBJECT_DATUM_MASK)
40
#define OBJECT_GC(obj) (((obj)>>OBJECT_GC_OFFSET)&OBJECT_GC_MASK)
41
 
42
#define DATA_SIZE_TYPE(type) ((type) == TYPE_CHAR) ? 1 : 4
43
// XXX: Change to DEVTYPE_BOOT || == DEVTYPE_STORAGE when we're ready
44
#define DATA_TYPE_DEV(dev) \
45
        (((dev) == DEVTYPE_BOOT) ? TYPE_NONE : TYPE_CHAR)
46
#endif /* _ENCDEC_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.