diff options
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/intr/intrrp.H | 4 | ||||
-rw-r--r-- | src/usr/runtime/fakepayload.C | 8 | ||||
-rw-r--r-- | src/usr/testcore/kernel/vmmbasetest.H | 11 | ||||
-rw-r--r-- | src/usr/trace/daemon/daemon.C | 15 |
4 files changed, 28 insertions, 10 deletions
diff --git a/src/usr/intr/intrrp.H b/src/usr/intr/intrrp.H index b8c2e9d82..b6896ebbc 100644 --- a/src/usr/intr/intrrp.H +++ b/src/usr/intr/intrrp.H @@ -61,7 +61,7 @@ namespace INTR uint32_t threadId:3; //!< Thread number (0-7) } PACKED; }; - PIR_t(uint32_t i_word) : word(i_word) {} + PIR_t(uint32_t i_word = 0) : word(i_word) {} PIR_t operator= (uint32_t i_word) { @@ -173,7 +173,7 @@ namespace INTR PE_IRSN_TX = 4, // downstream enable }; - enum INTR_ROUTING_t + enum INTR_ROUTING_t { INTR_UPSTREAM, INTR_DOWNSTREAM, diff --git a/src/usr/runtime/fakepayload.C b/src/usr/runtime/fakepayload.C index 0600bfa68..0890ecdcd 100644 --- a/src/usr/runtime/fakepayload.C +++ b/src/usr/runtime/fakepayload.C @@ -70,7 +70,13 @@ void FakePayload::load() // Copy over the fake payload code. uint8_t* dest = reinterpret_cast<uint8_t*>(memArea) + entry; - memcpy(dest, *(reinterpret_cast<void**>(&payload)), size); + union fn_ptr + { + void (*opd)(); + uint64_t** data; + }; + fn_ptr payload_code = { payload }; + memcpy(dest, *payload_code.data, size); // Invalidate the icache since this is instructions. mm_icache_invalidate(memArea, ALIGN_8(safeClearArea) / sizeof(uint64_t)); diff --git a/src/usr/testcore/kernel/vmmbasetest.H b/src/usr/testcore/kernel/vmmbasetest.H index fbfdddf70..15c853268 100644 --- a/src/usr/testcore/kernel/vmmbasetest.H +++ b/src/usr/testcore/kernel/vmmbasetest.H @@ -150,7 +150,16 @@ class VmmBaseTest : public CxxTest::TestSuite static void* writeToKernelCode(void* unused) { - (*(*(uint64_t**)&printk)) = 0x12345678; + uint64_t value = 0x12345678; + + union fn_ptr + { + void (*opd)(const char*, ...); + uint64_t** data; + }; + fn_ptr function = { printk }; + + memcpy(*function.data, &value, sizeof(value)); return NULL; } diff --git a/src/usr/trace/daemon/daemon.C b/src/usr/trace/daemon/daemon.C index 4e4e8df04..e9062f867 100644 --- a/src/usr/trace/daemon/daemon.C +++ b/src/usr/trace/daemon/daemon.C @@ -324,10 +324,12 @@ namespace TRACEDAEMON iv_curOffset[whichBuffer] = 0; } + trace_bin_entry_t* contEntry = + reinterpret_cast<trace_bin_entry_t*>(&whichEntry->data[0]); + // Calculate the sizes of the entry. - size_t contEntryDataLength = - reinterpret_cast<trace_bin_entry_t*>(&whichEntry->data[0]) - ->head.length + sizeof(trace_bin_entry_t); + size_t contEntryDataLength = contEntry->head.length + + sizeof(trace_bin_entry_t); size_t contEntrySize = whichEntry->comp->iv_compNameLen + contEntryDataLength; @@ -705,10 +707,11 @@ namespace TRACEDAEMON if (NULL != entry->comp) { + trace_bin_entry_t* entryBin = + reinterpret_cast<trace_bin_entry_t*>(&entry->data[0]); // Calculate entry size. - size_t entryDataLength = - reinterpret_cast<trace_bin_entry_t*>(&entry->data[0]) - ->head.length + sizeof(trace_bin_entry_t); + size_t entryDataLength = entryBin->head.length + + sizeof(trace_bin_entry_t); size_t entrySize = entry->comp->iv_compNameLen + entryDataLength; |