Skip to content

Commit

Permalink
(fpga) Add API register for syscall trampoline address.
Browse files Browse the repository at this point in the history
Signed-off-by: Joachim Strömbergson <[email protected]>
  • Loading branch information
secworks authored and dehanj committed Nov 15, 2024
1 parent ad18c33 commit fd357a2
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions hw/application_fpga/core/tk1/rtl/tk1.v
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ module tk1(
localparam ADDR_APP_SIZE = 8'h0d;

localparam ADDR_BLAKE2S = 8'h10;
localparam ADDR_SYSCALL = 8'h12;

localparam ADDR_CDI_FIRST = 8'h20;
localparam ADDR_CDI_LAST = 8'h27;
Expand Down Expand Up @@ -143,6 +144,9 @@ module tk1(
reg [31 : 0] blake2s_addr_reg;
reg blake2s_addr_we;

reg [31 : 0] syscall_addr_reg;
reg syscall_addr_we;

reg [23 : 0] cpu_trap_ctr_reg;
reg [23 : 0] cpu_trap_ctr_new;
reg [2 : 0] cpu_trap_led_reg;
Expand Down Expand Up @@ -283,6 +287,7 @@ module tk1(
app_start_reg <= 32'h0;
app_size_reg <= 32'h0;
blake2s_addr_reg <= 32'h0;
syscall_addr_reg <= 32'h0;
cdi_mem[0] <= 32'h0;
cdi_mem[1] <= 32'h0;
cdi_mem[2] <= 32'h0;
Expand Down Expand Up @@ -354,6 +359,10 @@ module tk1(
blake2s_addr_reg <= write_data;
end

if (syscall_addr_we) begin
syscall_addr_reg <= write_data;
end

if (cdi_mem_we) begin
cdi_mem[address[2 : 0]] <= write_data;
end
Expand Down Expand Up @@ -568,6 +577,12 @@ module tk1(
end
end

if (address == ADDR_SYSCALL) begin
if (!fw_app_mode_reg) begin
syscall_addr_we = 1'h1;
end
end

if ((address >= ADDR_CDI_FIRST) && (address <= ADDR_CDI_LAST)) begin
if (!fw_app_mode_reg) begin
cdi_mem_we = 1'h1;
Expand Down Expand Up @@ -663,6 +678,10 @@ module tk1(
tmp_read_data = blake2s_addr_reg;
end

if (address == ADDR_SYSCALL) begin
tmp_read_data = syscall_addr_reg;
end

if ((address >= ADDR_CDI_FIRST) && (address <= ADDR_CDI_LAST)) begin
tmp_read_data = cdi_mem[address[2 : 0]];
end
Expand Down

0 comments on commit fd357a2

Please sign in to comment.