From 53b2a59a9b48b37f54c909bf4537a0ad259e72ed Mon Sep 17 00:00:00 2001 From: Cyuria <55673467+cyuria@users.noreply.github.com> Date: Thu, 13 Jun 2024 12:36:16 +1000 Subject: [PATCH] feat(zicsr): add zicsr instructions + parser stubs --- h/form/csr.h | 4 ++++ h/parse.h | 2 ++ src/form/csr.c | 16 ++++++++++++++++ src/parse.c | 10 ++++++++++ 4 files changed, 32 insertions(+) create mode 100644 h/form/csr.h create mode 100644 src/form/csr.c diff --git a/h/form/csr.h b/h/form/csr.h new file mode 100644 index 0000000..b880902 --- /dev/null +++ b/h/form/csr.h @@ -0,0 +1,4 @@ +#pragma once +#include "form/instructions.h" + +extern const struct formation zicsr[]; diff --git a/h/parse.h b/h/parse.h index bb1f1c1..748f716 100644 --- a/h/parse.h +++ b/h/parse.h @@ -26,5 +26,7 @@ arg_parser parse_jr; arg_parser parse_ftso; arg_parser parse_al; arg_parser parse_as; +arg_parser parse_csr; +arg_parser parse_csri; int parse_asm(const char *, struct sectionpos); diff --git a/src/form/csr.c b/src/form/csr.c new file mode 100644 index 0000000..9012c4b --- /dev/null +++ b/src/form/csr.c @@ -0,0 +1,16 @@ + +#include "form/csr.h" + +#include "form/generic.h" +#include "parse.h" + +const struct formation zicsr[] = { + { "csrrw", &form_itype, &parse_csr, { 4, OP_CSR, 0x1, 0 } }, + { "csrrs", &form_itype, &parse_csr, { 4, OP_CSR, 0x2, 0 } }, + { "csrrc", &form_itype, &parse_csr, { 4, OP_CSR, 0x3, 0 } }, + { "csrrwi", &form_itype, &parse_csri, { 4, OP_CSR, 0x5, 0 } }, + { "csrrsi", &form_itype, &parse_csri, { 4, OP_CSR, 0x6, 0 } }, + { "csrrci", &form_itype, &parse_csri, { 4, OP_CSR, 0x7, 0 } }, + + END_FORMATION +}; diff --git a/src/parse.c b/src/parse.c index 88f431f..d106323 100644 --- a/src/parse.c +++ b/src/parse.c @@ -727,3 +727,13 @@ struct args parse_as(char *argstr) return args; } + +struct args parse_csr(char *argstr) +{ + +} + +struct args parse_csri(char *argstr) +{ + +}