Added a pipeline stage + fixed SM param errors

This commit is contained in:
felsabbagh3 2019-11-13 12:25:28 -05:00
parent 7f7d17d176
commit 70651f0340
15 changed files with 26390 additions and 24621 deletions

View file

@ -258,8 +258,8 @@
`define SHARED_MEMORY_HEIGHT ((`SHARED_MEMORY_SIZE) / (`SHARED_MEMORY_BANKS * `SHARED_MEMORY_BYTES_PER_READ))
`define SHARED_MEMORY_BANK_OFFSET_ST (2)
`define SHARED_MEMORY_BANK_OFFSET_ED (2+$clog2(`DCACHE_BANKS)-1)
`define SHARED_MEMORY_BANK_OFFSET_ED (2+$clog2(`SHARED_MEMORY_BANKS)-1)
`define SHARED_MEMORY_BLOCK_OFFSET_ST (`SHARED_MEMORY_BANK_OFFSET_ED + 1)
`define SHARED_MEMORY_BLOCK_OFFSET_ED (`SHARED_MEMORY_BLOCK_OFFSET_ST +$clog2(`SHARED_MEMORY_LOG_WORDS_PER_READ)-1)
`define SHARED_MEMORY_BLOCK_OFFSET_ED (`SHARED_MEMORY_BLOCK_OFFSET_ST +`SHARED_MEMORY_LOG_WORDS_PER_READ-1)
`define SHARED_MEMORY_INDEX_OFFSET_ST (`SHARED_MEMORY_BLOCK_OFFSET_ED + 1)
`define SHARED_MEMORY_INDEX_OFFSET_ED (`SHARED_MEMORY_INDEX_OFFSET_ST + $clog2(`SHARED_MEMORY_HEIGHT)-1)

View file

@ -31,39 +31,63 @@ module VX_lsu (
);
wire[`NT_M1:0][31:0] use_address;
wire[`NT_M1:0][31:0] use_store_data;
wire[`NT_M1:0] use_valid;
wire[2:0] use_mem_read;
wire[2:0] use_mem_write;
wire[4:0] use_rd;
wire[`NW_M1:0] use_warp_num;
wire[1:0] use_wb;
wire[31:0] use_pc;
wire zero = 0;
VX_generic_register #(.N(308)) lsu_buffer(
.clk (clk),
.reset(reset),
.stall(out_delay),
.flush(zero),
.in ({address , VX_lsu_req.store_data, VX_lsu_req.valid, VX_lsu_req.mem_read, VX_lsu_req.mem_write, VX_lsu_req.rd, VX_lsu_req.warp_num, VX_lsu_req.wb, VX_lsu_req.lsu_pc}),
.out ({use_address, use_store_data , use_valid , use_mem_read , use_mem_write , use_rd , use_warp_num , use_wb , use_pc })
);
genvar index;
for (index = 0; index <= `NT_M1; index = index + 1) begin
assign VX_dcache_req.out_cache_driver_in_address[index] = address[index];
assign VX_dcache_req.out_cache_driver_in_data[index] = VX_lsu_req.store_data[index];
assign VX_dcache_req.out_cache_driver_in_valid[index] = (VX_lsu_req.valid[index]);
assign VX_dcache_req.out_cache_driver_in_address[index] = use_address[index];
assign VX_dcache_req.out_cache_driver_in_data[index] = use_store_data[index];
assign VX_dcache_req.out_cache_driver_in_valid[index] = (use_valid[index]);
assign VX_mem_wb.loaded_data[index] = VX_dcache_rsp.in_cache_driver_out_data[index];
end
assign VX_dcache_req.out_cache_driver_in_mem_read = VX_lsu_req.mem_read;
assign VX_dcache_req.out_cache_driver_in_mem_write = VX_lsu_req.mem_write;
assign VX_dcache_req.out_cache_driver_in_mem_read = use_mem_read;
assign VX_dcache_req.out_cache_driver_in_mem_write = use_mem_write;
assign VX_mem_wb.rd = VX_lsu_req.rd;
assign VX_mem_wb.wb = VX_lsu_req.wb & {!VX_dcache_rsp.delay, !VX_dcache_rsp.delay};
assign VX_mem_wb.wb_valid = VX_lsu_req.valid;
assign VX_mem_wb.wb_warp_num = VX_lsu_req.warp_num;
assign VX_mem_wb.rd = use_rd;
assign VX_mem_wb.wb = use_wb & {!VX_dcache_rsp.delay, !VX_dcache_rsp.delay};
assign VX_mem_wb.wb_valid = use_valid;
assign VX_mem_wb.wb_warp_num = use_warp_num;
assign VX_mem_wb.mem_wb_pc = VX_lsu_req.lsu_pc;
assign VX_mem_wb.mem_wb_pc = use_pc;
integer curr_t;
always @(negedge clk) begin
for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1)
if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin
if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin
$display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]);
end
// integer curr_t;
// always @(negedge clk) begin
// for (int curr_t = 0; curr_t < `NT; curr_t=curr_t+1)
// if ((VX_dcache_req.out_cache_driver_in_valid[curr_t]) && !out_delay) begin
// if (VX_dcache_req.out_cache_driver_in_mem_read != `NO_MEM_READ) begin
// $display("Reading addr: %x val: %x", address[0], VX_mem_wb.loaded_data[0]);
// end
if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin
$display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]);
end
end
end
// if (VX_dcache_req.out_cache_driver_in_mem_write != `NO_MEM_WRITE) begin
// $display("Writing addr: %x val: %x", address[0], VX_dcache_req.out_cache_driver_in_data[0]);
// end
// end
// end
// wire zero_temp = 0;
// VX_generic_register #(.N(142)) register_wb_data

View file

@ -176,7 +176,7 @@ module VX_warp_scheduler (
if (update_use_wspawn) begin
use_wsapwn[warp_to_schedule] <= 0;
thread_masks[warp_to_schedule] <= 1'b1;
thread_masks[warp_to_schedule] <= 1;
end
@ -284,7 +284,7 @@ module VX_warp_scheduler (
wire real_use_wspawn = use_wsapwn[warp_to_schedule];
assign warp_pc = real_use_wspawn ? use_wsapwn_pc : warp_pcs[warp_to_schedule];
assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? 1'b1 : thread_masks[warp_to_schedule]);
assign thread_mask = (global_stall) ? 0 : (real_use_wspawn ? `NT'b1 : thread_masks[warp_to_schedule]);
assign warp_num = warp_to_schedule;
assign update_use_wspawn = use_wsapwn[warp_to_schedule] && !global_stall;

View file

@ -49,7 +49,7 @@ reg[`NT_M1:0][31:0] temp_out_data;
reg [SM_BANKS - 1:0][$clog2(SM_HEIGHT) - 1:0] block_addr;
reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_wdata;
reg [SM_BANKS - 1:0][SM_WORDS_PER_READ-1:0][31:0] block_rdata;
reg [SM_BANKS - 1:0][SM_LOG_WORDS_PER_READ:0] block_we;
reg [SM_BANKS - 1:0][SM_LOG_WORDS_PER_READ-1:0] block_we;
wire send_data;

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -52,6 +52,7 @@ int main()
// Main is called with all threads active of warp 0
vx_tmc(1);
vx_print_str("Simple Main\n");
@ -69,6 +70,22 @@ int main()
vx_print_str("test_wspawn\n");
test_wsapwn();
vx_print_str("Shared Memory test\n");
unsigned * ptr = (unsigned *) 0xFFFF0000;
unsigned value = 0;
for (int i = 0; i < 5; i++)
{
*ptr = value;
unsigned read_valud = *ptr;
vx_printf("ptr: ", (unsigned) ptr);
vx_printf("Original Value: ", value);
vx_printf("Read Value: ", read_valud);
vx_print_str("-------------------\n");
value++;
ptr++;
}
vx_print_str("vx_spawnWarps mat_add_kernel\n");
mat_add_args_t arguments;

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
:0200000480007A
:100000009705000093850502130540006B10B500AD
:10001000EF000001EF008074130500006B00050085
:10001000EF000001EF00407C130500006B000500BD
:10002000130540006B000500F32610029396A6010D
:10003000732600029315A6001316260037F1FF6FF2
:100040003301B1403301D1403301C100F326100226
@ -16,130 +16,148 @@
:1000E0002322B1008345050063880500EF00C001AD
:1000F000130515006FF01FFF8320010083254100C9
:100100001301C10067800000B702010023A0B20004
:1001100067800000130101FE232E1100232C8100B3
:10012000130401022326A4FEB70700810327C4FE9F
:100130001317270093874715B307F70083A7070016
:1001400013850700EFF05FF9130000008320C10161
:10015000032481011301010267800000130101FEE5
:10016000232E1100232C8100130401022326A4FE58
:100170002324B4FE0325C4FEEFF01FF6032584FEFE
:10018000EFF05FF9B707008113850704EFF0DFF4A4
:10019000130000008320C101032481011301010227
:1001A00067800000130101FE232E1100232C810023
:1001B00013040102B707008183A7C72A138507002C
:1001C000EFF09FEAB707008103A7872AB7070081EE
:1001D00083A7472A13850700E7000700EFF0DFEA4F
:1001E0002326A4FE8327C4FE6388070013050000AE
:1001F000EFF09FE76F00C00013051000EFF0DFE69F
:10020000130000008320C1010324810113010102B6
:1002100067800000130101FE232E1100232C8100B2
:10022000130401022326A4FE2324B4FE2322C4FEC9
:100230002320D4FEB7070081032744FE23A4E72A26
:10024000B7070081032704FE23A2E72AB70700812E
:10025000032784FE23A6E72AB70700809387471A5F
:10026000938507000325C4FEEFF09FDFEFF09FF3B7
:10027000130000008320C101032481011301010246
:1002800067800000130101FE232E1100232C810042
:1002900013040102B707008113854708EFF0DFE37D
:1002A00013054000EFF05FDCEFF09FDE2326A4FE95
:1002B0000327C4FEB70700818326C4FE9396260059
:1002C0009387471DB387F60023A0E70013051000AE
:1002D000EFF09FD9B707008183A7471D138507005B
:1002E000EFF05FE3B707008113854709EFF0DFDE2A
:1002F000B70700819387471D83A747001385070031
:10030000EFF05FE1B707008113854709EFF0DFDC0D
:10031000B70700819387471D83A7870013850700D0
:10032000EFF05FDFB707008113854709EFF0DFDAF1
:10033000B70700819387471D83A7C7001385070070
:10034000EFF05FDDB707008113854709EFF0DFD8D5
:10035000130000008320C101032481011301010265
:1003600067800000130101FE232E1100232C810061
:1003700013040102EFF0DFD12326A4FE8327C4FE7D
:1003800093B72700A305F4FE8347B4FE1385070047
:10039000EFF09FCE8347B4FE638407068327C4FE35
:1003A00093B717002305F4FE8347A4FE13850700C7
:1003B000EFF09FCC8347A4FE63820702B70700815A
:1003C0000327C4FE131727009387072CB307F700F2
:1003D0001307A00023A0E7006F000002B707008109
:1003E0000327C4FE131727009387072CB307F700D2
:1003F0001307B00023A0E700EFF09FC86F0040068E
:100400008327C4FE93B73700A304F4FE834794FE0A
:1004100013850700EFF05FC6834794FE63820702EF
:10042000B70700810327C4FE131727009387072C03
:10043000B307F7001307C00023A0E7006F00000216
:10044000B70700810327C4FE131727009387072CE3
:10045000B307F7001307D00023A0E700EFF05FC257
:10046000EFF01FC2B707008183A7072C1385070091
:10047000EFF05FCAB707008113854709EFF0DFC5CA
:10048000B70700819387072C83A7470013850700D0
:10049000EFF05FC8B707008113854709EFF0DFC3AE
:1004A000B70700819387072C83A787001385070070
:1004B000EFF05FC6B707008113854709EFF0DFC192
:1004C000B70700819387072C83A7C7001385070010
:1004D000EFF05FC4B707008113854709EFF0DFBF76
:1004E000130000008320C1010324810113010102D4
:1004F00067800000130101FE232E1100232C8100D0
:1005000013040102EFF05FB82326A4FEB7070081B1
:100510000327C4FE131727009387072BB307F700A1
:100520000327C4FE23A0E7008327C4FE63860700D9
:1005300013050000EFF05FB3130000008320C1013A
:10054000032481011301010267800000130101FEF1
:10055000232E1100232C810013040102B707008011
:100560009387474F2326F4FE8325C4FE13054000DE
:10057000EFF01FAFEFF01FF8B707008183A7072B3D
:1005800013850700EFF01FB9B707008113854709EE
:10059000EFF09FB4B70700819387072B83A747002D
:1005A00013850700EFF01FB7B707008113854709D0
:1005B000EFF09FB2B70700819387072B83A78700CF
:1005C00013850700EFF01FB5B707008113854709B2
:1005D000EFF09FB0B70700819387072B83A7C70071
:1005E00013850700EFF01FB3B70700811385470994
:1005F000EFF09FAE130000008320C10103248101AE
:100600001301010267800000130101FF232611007E
:100610002324810013040101EFF0DFC6B707008136
:1006200013858709EFF05FAB13054000EFF0DFA300
:10063000EFF05FD313051000EFF01FA3B7070081A1
:100640001385C70AEFF05FA9EFF05FF01300000019
:100650008320C10003248100130101016780000091
:10066000130101FC232E1102232C81021304010427
:100670002326A4FC8327C4FC2326F4FEEFF0DFA08E
:100680002324A4FEEFF0DFA02322A4FE8327C4FED0
:1006900083A70701032784FE637EF7008327C4FE38
:1006A00083A7C700032744FE6376F7009307100073
:1006B0006F00800093070000A301F4FE834734FE1F
:1006C00093F71700A301F4FE834734FE1385070058
:1006D000EFF09F9A834734FE638607068327C4FEA4
:1006E00003A7C700832784FEB307F702032744FE4E
:1006F000B307F700232EF4FC8327C4FE03A70700EB
:100700008327C4FD93972700B307F70083A607004C
:100710008327C4FE03A747008327C4FD93972700C0
:10072000B307F70003A707008327C4FE03A68700CB
:100730008327C4FD93972700B307F6003387E600AD
:1007400023A0E700EFF0DF93130000008320C10334
:10075000032481031301010467800000130101FCDD
:10076000232E1102232C810213040104130510000F
:10077000EFF09F8FB70700811385870FEFF0DF95AC
:10078000EFF05FB0B707008113858710EFF0DF94BB
:1007900013054000EFF05F8DEFF0DFBC1305100094
:1007A000EFF09F8CB70700811385C711EFF0DF9240
:1007B000EFF0DFD9B70700811385C712EFF0DF91A3
:1007C000B7070081938747222324F4FCB7070081F1
:1007D000938747262326F4FCB70700819387072DCC
:1007E0002328F4FC93074000232AF4FC93074000DD
:1007F000232CF4FC930740002322F4FE93074000CF
:100800002320F4FE032744FE832504FE930784FC83
:1008100093860700B7070080138607661305070055
:10082000EFF05F9F232604FE6F000008232404FEE0
:100830006F004005032744FD8327C4FE3307F702FA
:10084000832784FEB307F700232EF4FCB70700814B
:100850000327C4FD131727009387072DB307F7005D
:1008600083A7070013850700EFF0DF8AB707008131
:100870001385C714EFF05F86832784FE93871700E4
:100880002324F4FE032744FD832784FEE3E4E7FAF0
:10089000B707008113850715EFF01F848327C4FE77
:1008A000938717002326F4FE032784FD8327C4FEC5
:1008B000E3EEE7F693070000138507008320C103EA
:0C08C00003248103130101046780000081
:1001100067800000130101FD2326110223248102C0
:1001200013040103232EA4FC0327C4FD9307F0004E
:1001300063E4E702B70700810327C4FD1317270014
:100140009387C71AB307F70083A707001385070033
:10015000EFF09FF86F004007930700022326F4FE9C
:10016000A30504FE8327C4FE9387C7FF0327C4FDAE
:10017000B357F70093F7F7002322F4FE832744FEDA
:100180006386070093071000A305F4FE8347B4FEBF
:1001900063820702B7070081032744FE1317270075
:1001A0009387C71AB307F70083A7070013850700D3
:1001B000EFF09FF28327C4FE9387C7FF2326F4FE48
:1001C0008327C4FEE340F0FA8320C10203248102A6
:1001D0001301010367800000130101FE232E1100AB
:1001E000232C8100130401022326A4FE2324B4FE41
:1001F0000325C4FEEFF05FEE032584FEEFF09FF1D0
:10020000B707008113850704EFF01FED130000000E
:100210008320C101032481011301010267800000D2
:10022000130101FE232E1100232C8100130401026F
:10023000B707008183A7473013850700EFF0DFE29F
:10024000B707008103A70730B707008183A7C72F2F
:1002500013850700E7000700EFF01FE32326A4FE45
:100260008327C4FE6388070013050000EFF0DFDF7B
:100270006F00C00013051000EFF01FDF1300000037
:100280008320C10103248101130101026780000062
:10029000130101FE232E1100232C810013040102FF
:1002A0002326A4FE2324B4FE2322C4FE2320D4FE4E
:1002B000B7070081032744FE23A0E730B70700817A
:1002C000032704FE23AEE72EB7070081032784FE31
:1002D00023A2E730B70700809387072293850700A2
:1002E0000325C4FEEFF0DFD7EFF09FF3130000000B
:1002F0008320C101032481011301010267800000F2
:10030000130101FE232E1100232C8100130401028E
:10031000B707008113854708EFF01FDC1305400085
:10032000EFF09FD4EFF0DFD62326A4FE0327C4FE10
:10033000B70700818326C4FE939626009387C722C1
:10034000B387F60023A0E70013051000EFF0DFD11C
:10035000B707008183A7C72213850700EFF09FDB53
:10036000B707008113854709EFF01FD7B707008152
:100370009387C72283A7470013850700EFF09FD913
:10038000B707008113854709EFF01FD5B707008134
:100390009387C72283A7870013850700EFF09FD7B5
:1003A000B707008113854709EFF01FD3B707008116
:1003B0009387C72283A7C70013850700EFF09FD557
:1003C000B707008113854709EFF01FD11300000024
:1003D0008320C10103248101130101026780000011
:1003E000130101FE232E1100232C810013040102AE
:1003F000EFF01FCA2326A4FE8327C4FE93B727006D
:10040000A305F4FE8347B4FE13850700EFF0DFC6B3
:100410008347B4FE638407068327C4FE93B717009F
:100420002305F4FE8347A4FE13850700EFF0DFC425
:100430008347A4FE63820702B70700810327C4FE37
:100440001317270093878731B307F7001307A0001E
:1004500023A0E7006F000002B70700810327C4FE56
:100460001317270093878731B307F7001307B000EE
:1004700023A0E700EFF0DFC06F0040068327C4FE33
:1004800093B73700A304F4FE834794FE1385070057
:10049000EFF09FBE834794FE63820702B707008197
:1004A0000327C4FE1317270093878731B307F7008C
:1004B0001307C00023A0E7006F000002B707008108
:1004C0000327C4FE1317270093878731B307F7006C
:1004D0001307D00023A0E700EFF09FBAEFF05FBA58
:1004E000B707008183A7873113850700EFF09FC20C
:1004F000B707008113854709EFF01FBEB7070081DA
:100500009387873183A7470013850700EFF09FC0CB
:10051000B707008113854709EFF01FBCB7070081BB
:100520009387873183A7870013850700EFF09FBE6D
:10053000B707008113854709EFF01FBAB70700819D
:100540009387873183A7C70013850700EFF09FBC0F
:10055000B707008113854709EFF01FB813000000AB
:100560008320C1010324810113010102678000007F
:10057000130101FE232E1100232C8100130401021C
:10058000EFF09FB02326A4FEB70700810327C4FE27
:100590001317270093878730B307F7000327C4FE9C
:1005A00023A0E7008327C4FE63860700130500002D
:1005B000EFF09FAB130000008320C10103248101F1
:1005C0001301010267800000130101FE232E1100B8
:1005D000232C810013040102B7070080938707577B
:1005E0002326F4FE8325C4FE13054000EFF05FA729
:1005F000EFF01FF8B707008183A787301385070046
:10060000EFF05FB1B707008113854709EFF0DFAC6A
:10061000B70700819387873083A7470013850700BA
:10062000EFF05FAFB707008113854709EFF0DFAA4E
:10063000B70700819387873083A78700138507005A
:10064000EFF05FADB707008113854709EFF0DFA832
:10065000B70700819387873083A7C70013850700FA
:10066000EFF05FABB707008113854709EFF0DFA616
:10067000130000008320C101032481011301010242
:1006800067800000130101FF23261100232481004D
:1006900013040101EFF0DFC6B70700811385870956
:1006A000EFF09FA313054000EFF01F9CEFF05FD326
:1006B00013051000EFF05F9BB70700811385C70A91
:1006C000EFF09FA1EFF05FF0130000008320C10066
:1006D000032481001301010167800000130101FC64
:1006E000232E1102232C8102130401042326A4FCCF
:1006F0008327C4FC2326F4FEEFF01F992324A4FED5
:10070000EFF01F992322A4FE8327C4FE83A70701CD
:10071000032784FE637EF7008327C4FE83A7C700F8
:10072000032744FE6376F700930710006F008000F4
:1007300093070000A301F4FE834734FE93F71700EC
:10074000A301F4FE834734FE13850700EFF0DF9228
:10075000834734FE638607068327C4FE03A7C700CA
:10076000832784FEB307F702032744FEB307F7008D
:10077000232EF4FC8327C4FE03A707008327C4FDB0
:1007800093972700B307F70083A607008327C4FECB
:1007900003A747008327C4FD93972700B307F700FB
:1007A00003A707008327C4FE03A687008327C4FD91
:1007B00093972700B307F6003387E60023A0E700EE
:1007C000EFF01F8C130000008320C103032481037A
:1007D0001301010467800000130101FB23261104AB
:1007E000232481041304010513051000EFF0DF87B3
:1007F000B70700811385870FEFF01F8EEFF05FB012
:10080000B707008113858710EFF01F8D1305400097
:10081000EFF09F85EFF0DFBC13051000EFF0DF84F1
:10082000B70700811385C711EFF01F8BEFF0DFD9F9
:10083000B70700811385C712EFF01F8AB707FFFFC4
:100840002326F4FE232404FE232204FE6F00000866
:100850008327C4FE032784FE23A0E7008327C4FE6A
:1008600083A70700232CF4FC8327C4FE938507008D
:10087000B707008113850714EFF01F96832584FEC8
:10088000B707008113858714EFF01F95832584FD3A
:10089000B70700811385C715EFF01F94B7070081D4
:1008A0001385C716EFF05F83832784FE93871700B5
:1008B0002324F4FE8327C4FE938747002326F4FEF7
:1008C000832744FE938717002322F4FE032744FE68
:1008D00093074000E3DEE7F6B7070081138547186A
:1008E000EFF08FFFB70700819387C727232CF4FA17
:1008F000B70700819387C72B232EF4FAB70700812F
:10090000938787322320F4FC930740002322F4FCD2
:10091000930740002324F4FC93074000232AF4FCAF
:10092000930740002328F4FC032744FD832504FD9E
:10093000930784FB93860700B70700801386C76D73
:1009400013050700EFF0DF94232004FE6F0000087A
:10095000232E04FC6F004005032744FC832704FE7C
:100960003307F7028327C4FDB307F7002326F4FCFF
:10097000B70700810327C4FC13172700938787322A
:10098000B307F70083A7070013850700EFF08FF880
:10099000B70700811385471AEFF00FF48327C4FDD2
:1009A00093871700232EF4FC032744FC8327C4FD00
:1009B000E3E4E7FAB70700811385871AEFF0CFF178
:1009C000832704FE938717002320F4FE032784FC6B
:1009D000832704FEE3EEE7F6930700001385070084
:1009E0008320C104032481041301010567800000F2
:02000004810079
:10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A
@ -159,30 +177,35 @@
:1000F000650000006600000053696D706C65204D5E
:1001000061696E0A00000000746573745F6469764B
:10011000657267656E63650A00000000746573743C
:100120005F77737061776E0A0000000076785F7306
:100130007061776E5761727073206D61745F616476
:10014000645F6B65726E656C0A0000002000000041
:020150000A00A3
:100154000000008104000081080000810C0000817F
:100164001000008114000081180000811C0000812F
:100174002000008124000081280000812C000081DF
:100184003000008134000081380000813C0000818F
:1001940044000081480000814C000081500000812F
:1001A40054000081580000815C00008160000081DF
:1001B40064000081680000816C000081700000818F
:1001C40074000081780000817C000081800000813F
:1001D4000500000005000000050000000500000007
:1001E400B8000081BC000081C0000081C40000810F
:1001F400C8000081CC000081D0000081D4000081BF
:10020400D8000081DC000081E0000081E40000816E
:10021400E8000081EC000081F0000081F40000811E
:1002240005000000050000000500000005000000B6
:1002340006000000060000000600000006000000A2
:10024400070000000700000007000000070000008E
:10025400080000000800000008000000080000007A
:100264000100000001000000010000000100000086
:100274000100000001000000010000000100000076
:100284000100000001000000010000000100000066
:100294000100000001000000010000000100000056
:100120005F77737061776E0A000000005368617238
:100130006564204D656D6F727920746573740A0073
:100140007074723A200000004F726967696E616CCA
:100150002056616C75653A200000000052656164AC
:100160002056616C75653A20000000002D2D2D2D64
:100170002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0AD2
:100180000000000076785F737061776E576172705F
:1001900073206D61745F6164645F6B65726E656C22
:0A01A0000A000000200000000A0021
:1001AC000000008104000081080000810C00008127
:1001BC001000008114000081180000811C000081D7
:1001CC002000008124000081280000812C00008187
:1001DC003000008134000081380000813C00008137
:1001EC0044000081480000814C00008150000081D7
:1001FC0054000081580000815C0000816000008187
:10020C0064000081680000816C0000817000008136
:10021C0074000081780000817C00008180000081E6
:10022C0005000000050000000500000005000000AE
:10023C00B8000081BC000081C0000081C4000081B6
:10024C00C8000081CC000081D0000081D400008166
:10025C00D8000081DC000081E0000081E400008116
:10026C00E8000081EC000081F0000081F4000081C6
:10027C00050000000500000005000000050000005E
:10028C00060000000600000006000000060000004A
:10029C000700000007000000070000000700000036
:1002AC000800000008000000080000000800000022
:1002BC00010000000100000001000000010000002E
:1002CC00010000000100000001000000010000001E
:1002DC00010000000100000001000000010000000E
:1002EC0001000000010000000100000001000000FE
:040000058000000077
:00000001FF

View file

@ -27,7 +27,12 @@ void upload(char ** ptr, char * src, int size)
{
char * drain = *ptr;
*((int *) drain) = size;
// *((int *) drain) = size;
char * size_ptr = (char *) size;
drain[0] = size_ptr[0];
drain[1] = size_ptr[1];
drain[2] = size_ptr[2];
drain[3] = size_ptr[3];
drain += 4;
@ -46,11 +51,19 @@ void download(char ** ptr, char * drain)
char * src = *ptr;
int size;
size = *((int *) src);
// size = *((int *) src);
char * size_ptr = (char *) size;
size_ptr[0] = src[0];
size_ptr[1] = src[1];
size_ptr[2] = src[2];
size_ptr[3] = src[3];
src += 4;
vx_printf("newlib.c: Size of download: ", size);
vx_printf("newlib.c: Real size: ", sizeof(struct stat));
// vx_printf("newlib.c: Size of download: ", size);
// vx_printf("newlib.c: Real size: ", sizeof(struct stat));
for (int i = 0; i < size; i++)
{
@ -79,12 +92,24 @@ int _fstat(int file, struct stat * st)
char * read_buffer = (char *) FILE_IO_READ;
struct stat newSt;
download((char **) &read_buffer, (char *) &newSt);
st->st_mode = S_IFCHR;
unsigned value;
download((char **) &read_buffer, (char *) &value);
st->st_mode = value;
download((char **) &read_buffer, (char *) &value);
st->st_dev = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_uid = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_gid = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_size = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_blksize = value;
// download((char **) &read_buffer, (char *) &value);
// st->st_blocks = value;
// st->st_mode = S_IFCHR;
// st->st_mode = 33279;
vx_printf("st_mode: ", st->st_mode);
vx_printf("st_dev: ", st->st_dev);

View file

@ -101,7 +101,6 @@ void Harp::reg_doWrite(Word cpuId, Word regNum) {
Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id):
a(a), iDec(d), mem(mem), steps(4)
{
release_warp = false;
foundSchedule = true;
schedule_w = 0;

View file

@ -82,7 +82,8 @@ Word signExt(Word w, Size bit, Word mask) {
void upload(unsigned * addr, char * src, int size, Warp & c)
{
// c.core->mem.write(current_addr, reg[rsrc[1]] & 0x000000FF, c.supervisorMode, 1);
cerr << "WRITING FINAL: " << *src << " size: " << size << "\n";
unsigned current_addr = *addr;
@ -93,6 +94,7 @@ void upload(unsigned * addr, char * src, int size, Warp & c)
for (int i = 0; i < size; i++)
{
unsigned value = src[i] & 0x000000FF;
cerr << "UPLOAD: (" << hex << current_addr << dec << ") = " << hex << ( value) << dec << "\n";
c.core->mem.write(current_addr, value, c.supervisorMode, 1);
current_addr += 1;
}
@ -155,13 +157,18 @@ void trap_to_simulator(Warp & c)
unsigned read_buffer = 0x71000000;
unsigned write_buffer = 0x72000000;
// cerr << "RAW READ BUFFER:\n";
// for (int i = 0; i < 10; i++)
// {
// unsigned new_addr = read_buffer + (4*i);
// unsigned data_read = c.core->mem.read(new_addr, c.supervisorMode);
// cerr << hex << new_addr << ": " << data_read << "\n";
// }
cerr << "RAW READ BUFFER:\n";
for (int i = 0; i < 10; i++)
{
unsigned new_addr = read_buffer + (4*i);
unsigned data_read = c.core->mem.read(new_addr, c.supervisorMode);
cerr << hex << new_addr << ": " << data_read << "\n";
}
for (int j = 0; j < 1024; j+=1)
{
c.core->mem.write((write_buffer+j), 0, c.supervisorMode, 1);
}
int command;
download(&read_buffer, (char *) &command, c);
@ -219,18 +226,26 @@ void trap_to_simulator(Warp & c)
fprintf(stderr, "------------------------\n");
fprintf(stderr, "Size of struct: %x\n", sizeof(struct stat));
fprintf(stderr, "st_mode: %d\n", st.st_mode);
fprintf(stderr, "st_dev: %d\n", st.st_dev);
fprintf(stderr, "st_ino: %d\n", st.st_ino);
fprintf(stderr, "st_uid: %d\n", st.st_uid);
fprintf(stderr, "st_gid: %d\n", st.st_gid);
fprintf(stderr, "st_rdev: %d\n", st.st_rdev);
fprintf(stderr, "st_size: %d\n", st.st_size);
fprintf(stderr, "st_blksize: %d\n", st.st_blksize);
fprintf(stderr, "st_blocks: %d\n", st.st_blocks);
fprintf(stderr, "st_mode: %x\n", st.st_mode);
fprintf(stderr, "st_dev: %x\n", st.st_dev);
fprintf(stderr, "st_ino: %x\n", st.st_ino);
fprintf(stderr, "st_uid: %x\n", st.st_uid);
fprintf(stderr, "st_gid: %x\n", st.st_gid);
fprintf(stderr, "st_rdev: %x\n", st.st_rdev);
fprintf(stderr, "st_size: %x\n", st.st_size);
fprintf(stderr, "st_blksize: %x\n", st.st_blksize);
fprintf(stderr, "st_blocks: %x\n", st.st_blocks);
fprintf(stderr, "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
upload(&write_buffer, (char *) &st, sizeof(struct stat), c);
upload(&write_buffer, (char *) &st.st_mode , sizeof(st.st_mode), c);
upload(&write_buffer, (char *) &st.st_dev , sizeof(st.st_dev), c);
// upload(&write_buffer, (char *) &st.st_uid , sizeof(st.st_uid), c);
// upload(&write_buffer, (char *) &st.st_gid , sizeof(st.st_gid), c);
// upload(&write_buffer, (char *) &st.st_size , sizeof(st.st_size), c);
// upload(&write_buffer, (char *) &st.st_blksize , sizeof(st.st_blksize), c);
// upload(&write_buffer, (char *) &st.st_blocks , sizeof(st.st_blocks), c);
// upload(&write_buffer, (char *) &st, sizeof(struct stat), c);
cerr << "RAW Write BUFFER:\n";
unsigned original_write_buffer = 0x72000000;

File diff suppressed because it is too large Load diff