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

Subversion Repositories igor

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

powered by: WebSVN 2.1.0

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