more 32x tests
[megadrive.git] / testpico / common.h
1 #define u8      unsigned char
2 #define u16     unsigned short
3 #define u32     unsigned int
4
5 #define noinline __attribute__((noinline))
6 #define unused   __attribute__((unused))
7 #define _packed  __attribute__((packed))
8
9 #define mem_barrier() \
10     asm volatile("":::"memory")
11
12 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
13
14 #define MKLONG(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
15
16 #define read8(a) \
17     *((volatile u8 *) (a))
18 #define read16(a) \
19     *((volatile u16 *) (a))
20 #define read32(a) \
21     *((volatile u32 *) (a))
22 #define write8(a, d) \
23     *((volatile u8 *) (a)) = (d)
24 #define write16(a, d) \
25     *((volatile u16 *) (a)) = (d)
26 #define write32(a, d) \
27     *((volatile u32 *) (a)) = (d)
28
29 enum x32x_cmd {
30     CMD_ECHO = 1,
31     CMD_READ_FRT = 2, // read Free-Running Timer
32     CMD_READ8 = 3,
33     CMD_READ16 = 4,
34     CMD_READ32 = 5,
35     CMD_WRITE8 = 6,
36     CMD_WRITE16 = 7,
37     CMD_WRITE32 = 8,
38 };
39
40 // vim:ts=4:sw=4:expandtab