Skip to content

Commit fac1412

Browse files
authored
Merge pull request #1218 from fk-sc/fk-sc/ref-mem-acc-res
target/riscv: refactored memory access result codes
2 parents e1fe15f + 0bd8aaa commit fac1412

File tree

1 file changed

+35
-38
lines changed

1 file changed

+35
-38
lines changed

src/target/riscv/riscv-013.c

Lines changed: 35 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3465,40 +3465,39 @@ typedef enum {
34653465
MEM_ACCESS_RESULT_TYPE_OK,
34663466
MEM_ACCESS_RESULT_TYPE_DISABLED,
34673467
MEM_ACCESS_RESULT_TYPE_SKIPPED,
3468-
MEM_ACCESS_RESULT_TYPE_FAILED
3468+
MEM_ACCESS_RESULT_TYPE_FAILED,
3469+
MEM_ACCESS_RESULT_TYPE_ENUM_SIZE,
34693470
} mem_access_result_type_t;
34703471

3471-
#define LIST_OF_MEM_ACCESS_RESULTS \
3472-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_OK, \
3473-
MEM_ACCESS_RESULT_TYPE_OK, "ok") \
3474-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_DISABLED, \
3475-
MEM_ACCESS_RESULT_TYPE_DISABLED, "disabled") \
3476-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_ABSTRACT_ACCESS_CMDERR, \
3477-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (abstract access cmderr)") \
3478-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_PROGBUF_NOT_PRESENT, \
3479-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (progbuf not present)") \
3480-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_PROGBUF_INSUFFICIENT, \
3481-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (insufficient progbuf)") \
3482-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_UNSUPPORTED_ACCESS_SIZE, \
3483-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (unsupported access size)") \
3484-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_XLEN_TOO_SHORT, \
3485-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (xlen too short)") \
3486-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TARGET_NOT_HALTED, \
3487-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (target not halted)") \
3488-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TOO_LARGE_ADDRESS, \
3489-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (address too large)") \
3490-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_UNSUPPORTED_INCREMENT_SIZE, \
3491-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (increment size not supported)") \
3492-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TARGET_SELECT_FAILED, \
3493-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (dm target select failed)") \
3494-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_FENCE_EXEC_FAILED, \
3495-
MEM_ACCESS_RESULT_TYPE_SKIPPED, "skipped (fence execution failed)") \
3496-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED, \
3497-
MEM_ACCESS_RESULT_TYPE_FAILED, "failed") \
3498-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED_DM_ACCESS_FAILED, \
3499-
MEM_ACCESS_RESULT_TYPE_FAILED, "failed (DM register access failed)") \
3500-
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED_PRIV_MOD_FAILED, \
3501-
MEM_ACCESS_RESULT_TYPE_FAILED, "failed (privilege modification failed)") \
3472+
#define LIST_OF_MEM_ACCESS_RESULTS \
3473+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_OK, OK, "ok") \
3474+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_DISABLED, DISABLED, "disabled") \
3475+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED, SKIPPED, "skipped") \
3476+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_ABSTRACT_ACCESS_CMDERR, \
3477+
SKIPPED, "skipped (abstract access cmderr)") \
3478+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_PROGBUF_NOT_PRESENT, \
3479+
SKIPPED, "skipped (progbuf not present)") \
3480+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_PROGBUF_INSUFFICIENT, \
3481+
SKIPPED, "skipped (insufficient progbuf)") \
3482+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_UNSUPPORTED_ACCESS_SIZE, \
3483+
SKIPPED, "skipped (unsupported access size)") \
3484+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_XLEN_TOO_SHORT, \
3485+
SKIPPED, "skipped (xlen too short)") \
3486+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TARGET_NOT_HALTED, \
3487+
SKIPPED, "skipped (target not halted)") \
3488+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TOO_LARGE_ADDRESS, \
3489+
SKIPPED, "skipped (address too large)") \
3490+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_UNSUPPORTED_INCREMENT_SIZE, \
3491+
SKIPPED, "skipped (increment size not supported)") \
3492+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_TARGET_SELECT_FAILED, \
3493+
SKIPPED, "skipped (dm target select failed)") \
3494+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_SKIPPED_FENCE_EXEC_FAILED, \
3495+
SKIPPED, "skipped (fence execution failed)") \
3496+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED, FAILED, "failed") \
3497+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED_DM_ACCESS_FAILED, \
3498+
FAILED, "failed (DM register access failed)") \
3499+
MEM_ACCESS_RESULT_HANDLER(MEM_ACCESS_FAILED_PRIV_MOD_FAILED, \
3500+
FAILED, "failed (privilege modification failed)")
35023501

35033502

35043503
#define MEM_ACCESS_RESULT_HANDLER(name, kind, msg) name,
@@ -3510,14 +3509,13 @@ typedef enum {
35103509
bool is_mem_access_failed(mem_access_result_t status)
35113510
{
35123511
#define MEM_ACCESS_RESULT_HANDLER(name, kind, msg) \
3513-
case name: return kind == MEM_ACCESS_RESULT_TYPE_FAILED;
3512+
case name: return MEM_ACCESS_RESULT_TYPE_##kind \
3513+
== MEM_ACCESS_RESULT_TYPE_FAILED;
35143514

35153515
switch (status) {
35163516
LIST_OF_MEM_ACCESS_RESULTS
35173517
}
3518-
35193518
#undef MEM_ACCESS_RESULT_HANDLER
3520-
35213519
LOG_ERROR("Unknown memory access status: %d", status);
35223520
assert(false && "Unknown memory access status");
35233521
return true;
@@ -3526,14 +3524,13 @@ bool is_mem_access_failed(mem_access_result_t status)
35263524
bool is_mem_access_skipped(mem_access_result_t status)
35273525
{
35283526
#define MEM_ACCESS_RESULT_HANDLER(name, kind, msg) \
3529-
case name: return kind == MEM_ACCESS_RESULT_TYPE_SKIPPED;
3527+
case name: return MEM_ACCESS_RESULT_TYPE_##kind \
3528+
== MEM_ACCESS_RESULT_TYPE_SKIPPED;
35303529

35313530
switch (status) {
35323531
LIST_OF_MEM_ACCESS_RESULTS
35333532
}
3534-
35353533
#undef MEM_ACCESS_RESULT_HANDLER
3536-
35373534
LOG_ERROR("Unknown memory access status: %d", status);
35383535
assert(false && "Unknown memory access status");
35393536
return true;

0 commit comments

Comments
 (0)