Bugfix in MMIOPlatform.bsv for instruction-fetch from IO addrs
Detail: an "instruction-fetch" response from mmioplatform to core should be an "InstFetch". This was true for successful fabric reads, but on error responses it was wrongly returned as a "DataAccess" response. This was causing a deadlock.
This commit is contained in:
@@ -59,8 +59,8 @@ typedef struct {
|
||||
Bit #(64) boot_rom_addr_base;
|
||||
Bit #(64) boot_rom_addr_size;
|
||||
|
||||
Bit #(64) mem0_controller_addr_base;
|
||||
Bit #(64) mem0_controller_addr_size;
|
||||
Bit #(64) main_mem_addr_base;
|
||||
Bit #(64) main_mem_addr_size;
|
||||
|
||||
Bit #(64) pc_reset_value;
|
||||
} SoC_Map_Struct
|
||||
@@ -68,15 +68,15 @@ deriving (FShow);
|
||||
|
||||
SoC_Map_Struct soc_map_struct =
|
||||
SoC_Map_Struct {
|
||||
near_mem_io_addr_base: 'h_0200_0000,
|
||||
near_mem_io_addr_base: 'h_0200_0000,
|
||||
|
||||
boot_rom_addr_base: 'h_0000_1000,
|
||||
boot_rom_addr_size: 'h_0000_1000,
|
||||
boot_rom_addr_base: 'h_0000_1000,
|
||||
boot_rom_addr_size: 'h_0000_1000,
|
||||
|
||||
mem0_controller_addr_base: 'h_8000_0000,
|
||||
mem0_controller_addr_size: 'h_1000_0000,
|
||||
main_mem_addr_base: 'h_8000_0000,
|
||||
main_mem_addr_size: 'h_1000_0000,
|
||||
|
||||
pc_reset_value: 'h_0000_1000
|
||||
pc_reset_value: 'h_0000_1000
|
||||
};
|
||||
|
||||
// ================================================================
|
||||
|
||||
@@ -350,7 +350,7 @@ module mkSoC_Top (SoC_Top_IFC);
|
||||
method Action set_watch_tohost (Bool watch_tohost, Fabric_Addr tohost_addr);
|
||||
mem0_controller.set_watch_tohost (watch_tohost, tohost_addr);
|
||||
if (watch_tohost) begin
|
||||
let fromhost_addr = 0;
|
||||
let fromhost_addr = 'h_8000_1040;
|
||||
corew.set_htif_addrs (tohost_addr, fromhost_addr);
|
||||
end
|
||||
endmethod
|
||||
|
||||
Reference in New Issue
Block a user