1 #define __STDC_FORMAT_MACROS
9 void store_8(void *addr, uint8_t val)
11 DEBUG("addr = %p, val = %" PRIu8 "\n", addr, val);
12 thread_id_t tid=thread_current()->get_id();
13 ClockVector * cv=model->get_cv(tid);
14 raceCheckWrite(tid, addr, cv);
15 (*(uint8_t *)addr) = val;
18 void store_16(void *addr, uint16_t val)
20 DEBUG("addr = %p, val = %" PRIu16 "\n", addr, val);
21 thread_id_t tid=thread_current()->get_id();
22 ClockVector * cv=model->get_cv(tid);
23 raceCheckWrite(tid, addr, cv);
24 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+1), cv);
25 (*(uint16_t *)addr) = val;
28 void store_32(void *addr, uint32_t val)
30 DEBUG("addr = %p, val = %" PRIu32 "\n", addr, val);
31 thread_id_t tid=thread_current()->get_id();
32 ClockVector * cv=model->get_cv(tid);
33 raceCheckWrite(tid, addr, cv);
34 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+1), cv);
35 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+2), cv);
36 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+3), cv);
37 (*(uint32_t *)addr) = val;
40 void store_64(void *addr, uint64_t val)
42 DEBUG("addr = %p, val = %" PRIu64 "\n", addr, val);
43 thread_id_t tid=thread_current()->get_id();
44 ClockVector * cv=model->get_cv(tid);
45 raceCheckWrite(tid, addr, cv);
46 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+1), cv);
47 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+2), cv);
48 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+3), cv);
49 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+4), cv);
50 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+5), cv);
51 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+6), cv);
52 raceCheckWrite(tid, (void *)(((uintptr_t)addr)+7), cv);
53 (*(uint64_t *)addr) = val;
56 uint8_t load_8(void *addr)
58 DEBUG("addr = %p\n", addr);
59 thread_id_t tid=thread_current()->get_id();
60 ClockVector * cv=model->get_cv(tid);
61 raceCheckRead(tid, addr, cv);
62 return *((uint8_t *)addr);
65 uint16_t load_16(void *addr)
67 DEBUG("addr = %p\n", addr);
68 thread_id_t tid=thread_current()->get_id();
69 ClockVector * cv=model->get_cv(tid);
70 raceCheckRead(tid, addr, cv);
71 raceCheckRead(tid, (void *)(((uintptr_t)addr)+1), cv);
72 return *((uint16_t *)addr);
75 uint32_t load_32(void *addr)
77 DEBUG("addr = %p\n", addr);
78 thread_id_t tid=thread_current()->get_id();
79 ClockVector * cv=model->get_cv(tid);
80 raceCheckRead(tid, addr, cv);
81 raceCheckRead(tid, (void *)(((uintptr_t)addr)+1), cv);
82 raceCheckRead(tid, (void *)(((uintptr_t)addr)+2), cv);
83 raceCheckRead(tid, (void *)(((uintptr_t)addr)+3), cv);
84 return *((uint32_t *)addr);
87 uint64_t load_64(void *addr)
89 DEBUG("addr = %p\n", addr);
90 thread_id_t tid=thread_current()->get_id();
91 ClockVector * cv=model->get_cv(tid);
92 raceCheckRead(tid, addr, cv);
93 raceCheckRead(tid, (void *)(((uintptr_t)addr)+1), cv);
94 raceCheckRead(tid, (void *)(((uintptr_t)addr)+2), cv);
95 raceCheckRead(tid, (void *)(((uintptr_t)addr)+3), cv);
96 raceCheckRead(tid, (void *)(((uintptr_t)addr)+4), cv);
97 raceCheckRead(tid, (void *)(((uintptr_t)addr)+5), cv);
98 raceCheckRead(tid, (void *)(((uintptr_t)addr)+6), cv);
99 raceCheckRead(tid, (void *)(((uintptr_t)addr)+7), cv);
100 return *((uint64_t *)addr);