1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef __SP_LOCAL_H_INCLUDED__
16#define __SP_LOCAL_H_INCLUDED__
17
18#include <type_support.h>
19#include "sp_global.h"
20
21struct sp_state_s {
22 int pc;
23 int status_register;
24 bool is_broken;
25 bool is_idle;
26 bool is_sleeping;
27 bool is_stalling;
28};
29
30struct sp_stall_s {
31 bool fifo0;
32 bool fifo1;
33 bool fifo2;
34 bool fifo3;
35 bool fifo4;
36 bool fifo5;
37 bool fifo6;
38 bool fifo7;
39 bool fifo8;
40 bool fifo9;
41 bool fifoa;
42 bool dmem;
43 bool control_master;
44 bool icache_master;
45};
46
47#define sp_address_of(var) (HIVE_ADDR_ ## var)
48
49
50
51
52#define store_sp_int(var, value) \
53 sp_dmem_store_uint32(SP0_ID, (unsigned)sp_address_of(var), \
54 (uint32_t)(value))
55
56#define store_sp_ptr(var, value) \
57 sp_dmem_store_uint32(SP0_ID, (unsigned)sp_address_of(var), \
58 (uint32_t)(value))
59
60#define load_sp_uint(var) \
61 sp_dmem_load_uint32(SP0_ID, (unsigned)sp_address_of(var))
62
63#define load_sp_array_uint8(array_name, index) \
64 sp_dmem_load_uint8(SP0_ID, (unsigned)sp_address_of(array_name) + \
65 (index)*sizeof(uint8_t))
66
67#define load_sp_array_uint16(array_name, index) \
68 sp_dmem_load_uint16(SP0_ID, (unsigned)sp_address_of(array_name) + \
69 (index)*sizeof(uint16_t))
70
71#define load_sp_array_uint(array_name, index) \
72 sp_dmem_load_uint32(SP0_ID, (unsigned)sp_address_of(array_name) + \
73 (index)*sizeof(uint32_t))
74
75#define store_sp_var(var, data, bytes) \
76 sp_dmem_store(SP0_ID, (unsigned)sp_address_of(var), data, bytes)
77
78#define store_sp_array_uint8(array_name, index, value) \
79 sp_dmem_store_uint8(SP0_ID, (unsigned)sp_address_of(array_name) + \
80 (index)*sizeof(uint8_t), value)
81
82#define store_sp_array_uint16(array_name, index, value) \
83 sp_dmem_store_uint16(SP0_ID, (unsigned)sp_address_of(array_name) + \
84 (index)*sizeof(uint16_t), value)
85
86#define store_sp_array_uint(array_name, index, value) \
87 sp_dmem_store_uint32(SP0_ID, (unsigned)sp_address_of(array_name) + \
88 (index)*sizeof(uint32_t), value)
89
90#define store_sp_var_with_offset(var, offset, data, bytes) \
91 sp_dmem_store(SP0_ID, (unsigned)sp_address_of(var) + \
92 offset, data, bytes)
93
94#define load_sp_var(var, data, bytes) \
95 sp_dmem_load(SP0_ID, (unsigned)sp_address_of(var), data, bytes)
96
97#define load_sp_var_with_offset(var, offset, data, bytes) \
98 sp_dmem_load(SP0_ID, (unsigned)sp_address_of(var) + offset, \
99 data, bytes)
100
101#endif
102