Skip to content

Commit b42ae4b

Browse files
committed
Fix load for transfer operation
1 parent 972197e commit b42ae4b

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

src/Debug/debugger.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -1125,18 +1125,18 @@ void Debugger::freeState(Module *m, uint8_t *interruptData) {
11251125
debug("done with first msg\n");
11261126
}
11271127

1128-
void load(uint8_t *bytes, Module* m) {
1129-
auto start = read_B32(&bytes);
1130-
auto limit = read_B32(&bytes);
1128+
void Debugger::load(uint8_t *bytes, Module* m) {
1129+
auto start = read_B8(&bytes);
1130+
auto limit = read_B8(&bytes);
11311131
auto total_bytes = limit - start + 1;
1132+
this->channel->write("loading into %u - %u \n", start, limit);
11321133
memcpy(m->memory.bytes + start, bytes, total_bytes);
11331134
}
11341135

11351136
void Debugger::transfer(Module *m, uint8_t *interruptData) {
1136-
uint8_t *cursor = nullptr;
1137+
uint8_t *cursor = interruptData;
11371138
uint8_t *end = nullptr;
1138-
cursor = interruptData + 1; // skip interruptLoadSnapshot
1139-
uint32_t len = read_B32(&cursor);
1139+
uint16_t len = read_B16(&cursor);
11401140
end = cursor + len;
11411141

11421142
while (cursor < end) {

src/Debug/debugger.h

+2
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ class Debugger {
211211

212212
bool saveState(Module *m, uint8_t *interruptData);
213213

214+
void load(uint8_t *bytes, Module* m);
215+
214216
void transfer(Module *m, uint8_t *interruptData);
215217

216218
static uintptr_t readPointer(uint8_t **data);

src/Utils/util.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,13 @@ uint16_t read_B16(uint8_t **bytes) {
347347
return n;
348348
}
349349

350+
uint8_t read_B8(uint8_t **bytes) {
351+
uint8_t *b = *bytes;
352+
uint8_t n = b[0];
353+
*bytes += 1;
354+
return n;
355+
}
356+
350357
int read_B32_signed(uint8_t **bytes) {
351358
uint8_t *b = *bytes;
352359
int n = (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + b[3];

src/Utils/util.h

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ double wa_fmin(double a, double b);
121121
// legacy util functions (todo remove)
122122
uint32_t read_B32(uint8_t **bytes);
123123
uint16_t read_B16(uint8_t **bytes);
124+
uint8_t read_B8(uint8_t **bytes);
124125
int read_B32_signed(uint8_t **bytes);
125126
uint32_t read_L32(uint8_t **bytes);
126127
void chars_as_hexa(unsigned char *dest, unsigned char *source,

0 commit comments

Comments
 (0)