Skip to content

Commit 507cb76

Browse files
committed
Change to raw instead of str
Fix riscv#1370 (comment) Signed-off-by: Ariel Xiong <[email protected]>
1 parent bf33c6a commit 507cb76

File tree

9 files changed

+16
-20
lines changed

9 files changed

+16
-20
lines changed

c_emulator/riscv_callbacks.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,7 @@ unit trap_callback(bool is_interrupt, fbits cause)
118118
return UNIT;
119119
}
120120
// Page table walk callback
121-
unit ptw_start_callback(uint64_t vpn, const_sail_string access_type,
122-
const_sail_string privilege)
121+
unit ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege)
123122
{
124123
for (auto c : callbacks) {
125124
c->ptw_start_callback(vpn, access_type, privilege);

c_emulator/riscv_callbacks.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22
#include "sail.h"
3+
#include "sail_riscv_model.h"
34

45
#ifdef __cplusplus
56
extern "C" {
@@ -26,8 +27,7 @@ unit pc_write_callback(sbits new_pc);
2627
unit redirect_callback(sbits new_pc);
2728
unit trap_callback(bool is_interrupt, fbits cause);
2829
// Page table walk callbacks
29-
unit ptw_start_callback(uint64_t vpn, const_sail_string access_type,
30-
const_sail_string privilege);
30+
unit ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege);
3131
unit ptw_step_callback(sail_int level, sbits pte_addr, uint64_t pte);
3232
unit ptw_success_callback(uint64_t final_ppn, sail_int level);
3333
unit ptw_fail_callback(const char *error_type, sail_int level, sbits pte_addr);

c_emulator/riscv_callbacks_if.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include "sail.h"
4+
#include "sail_riscv_model.h"
45

56
// This class is not declared in "riscv_callbacks.h" as that file is
67
// included in the C model generated by Sail.
@@ -34,8 +35,7 @@ class callbacks_if {
3435
virtual void redirect_callback(sbits new_pc) = 0;
3536
virtual void trap_callback(bool is_interrupt, fbits cause) = 0;
3637
// Page table walk callbacks
37-
virtual void ptw_start_callback(uint64_t vpn, const char *access_type,
38-
const char *privilege)
38+
virtual void ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege)
3939
= 0;
4040
virtual void ptw_step_callback(sail_int level, sbits pte_addr, uint64_t pte)
4141
= 0;

c_emulator/riscv_callbacks_log.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,13 @@ void log_callbacks::trap_callback(bool is_interrupt, fbits cause)
128128
}
129129

130130
// Page table walk callback
131-
void log_callbacks::ptw_start_callback(uint64_t vpn,
132-
const_sail_string access_type,
133-
const_sail_string privilege)
131+
void log_callbacks::ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege)
134132
{
135133
if (trace_log != nullptr && config_print_ptw) {
136-
fprintf(trace_log, "PTW: Start, vpn=%ld, access_type=%s, privilege=%s", vpn,
137-
access_type, privilege);
134+
sail_string str_ac,str_pr;
135+
zaccessType_to_str(&str_ac,access_type);
136+
zprivLevel_to_str(&str_pr,privilege);
137+
fprintf(trace_log, "PTW: Start, vpn=%ld, access_type=%s, privilege=%s", vpn,str_ac,str_pr);
138138
}
139139
}
140140

c_emulator/riscv_callbacks_log.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ class log_callbacks : public callbacks_if {
2929
void redirect_callback(sbits new_pc) override;
3030
void trap_callback(bool is_interrupt, fbits cause) override;
3131
// Page table walk callback
32-
void ptw_start_callback(uint64_t vpn, const_sail_string access_type,
33-
const_sail_string privilege) override;
32+
void ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege) override;
3433
void ptw_step_callback(sail_int level, sbits pte_addr, uint64_t pte) override;
3534
void ptw_success_callback(uint64_t final_ppn, sail_int level) override;
3635
void ptw_fail_callback(const char *error_type, sail_int level,

c_emulator/riscv_callbacks_rvfi.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "riscv_config.h"
2+
#include "sail_riscv_model.h"
23
#include "riscv_callbacks_rvfi.h"
34
#include <stdlib.h>
45
#include <vector>
@@ -79,9 +80,7 @@ void rvfi_callbacks::trap_callback(bool is_interrupt, fbits cause)
7980

8081
// Page table walk callback
8182

82-
void rvfi_callbacks::ptw_start_callback(uint64_t /*vpn*/,
83-
const_sail_string /*access_type*/,
84-
const_sail_string /*privilege*/)
83+
void rvfi_callbacks::ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege)
8584
{
8685
}
8786

c_emulator/riscv_callbacks_rvfi.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ class rvfi_callbacks : public callbacks_if {
2424
void redirect_callback(sbits new_pc) override;
2525
void trap_callback(bool is_interrupt, fbits cause) override;
2626
// Page table walk callback
27-
void ptw_start_callback(uint64_t vpn, const_sail_string access_type,
28-
const_sail_string privilege) override;
27+
void ptw_start_callback(uint64_t vpn, struct zMemoryAccessTypezIuzK access_type,enum zPrivilege privilege) override;
2928
void ptw_step_callback(sail_int level, sbits pte_addr, uint64_t pte) override;
3029
void ptw_success_callback(uint64_t final_ppn, sail_int level) override;
3130
void ptw_fail_callback(const char *error_type, sail_int level,

model/core/callbacks.sail

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ function long_csr_write_callback(name : string, name_high : string, value : bits
8585
}
8686

8787
// Page table walk callback
88-
val ptw_start_callback = pure {c: "ptw_start_callback"} : (/* vpn */ bits(64), /* access type */ string, /* privilege */ string) -> unit
88+
val ptw_start_callback = pure {c: "ptw_start_callback"} : (/* vpn */ bits(64), /* access type */ MemoryAccessType(ext_access_type), /* privilege */ Privilege) -> unit
8989
function ptw_start_callback(_) = ()
9090

9191
val ptw_step_callback = pure {c: "ptw_step_callback"} : (/* level */ int, /* pte_addr */ physaddrbits, /* pte */ bits(64)) -> unit

model/sys/vmem.sail

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function pt_walk(
8787
global,
8888
ext_ptw,
8989
) = {
90-
ptw_start_callback(zero_extend(vpn), to_str(ac), to_str(priv));
90+
ptw_start_callback(zero_extend(vpn), ac, priv);
9191

9292
// Extract the PPN component for this level; 10 bits on Sv32, otherwise 9.
9393
let 'vpn_i_size = if 'v == 32 then 10 else 9;

0 commit comments

Comments
 (0)