Lines Matching full:csr
8 #include "csr.h"
60 CSRInfo *csr;
62 csr = get_csr(csr_num);
63 if (!csr) {
67 csr->readfn = (GenCSRFunc)readfn;
68 csr->writefn = (GenCSRFunc)writefn;
89 static bool check_csr_flags(DisasContext *ctx, const CSRInfo *csr, bool write)
91 if ((csr->flags & CSRFL_READONLY) && write) {
94 if ((csr->flags & CSRFL_IO) && translator_io_start(&ctx->base)) {
96 } else if ((csr->flags & CSRFL_EXITTB) && write) {
105 const CSRInfo *csr;
111 csr = get_csr(a->csr);
112 if (csr == NULL) {
113 /* CSR is undefined: read as 0. */
116 check_csr_flags(ctx, csr, false);
118 readfn = (GenCSRRead)csr->readfn;
122 tcg_gen_ld_tl(dest, tcg_env, csr->offset);
132 const CSRInfo *csr;
138 csr = get_csr(a->csr);
139 if (csr == NULL) {
140 /* CSR is undefined: write ignored, read old_value as 0. */
144 if (!check_csr_flags(ctx, csr, true)) {
145 /* CSR is readonly: trap. */
149 writefn = (GenCSRWrite)csr->writefn;
155 tcg_gen_ld_tl(dest, tcg_env, csr->offset);
156 tcg_gen_st_tl(src1, tcg_env, csr->offset);
165 const CSRInfo *csr;
171 csr = get_csr(a->csr);
172 if (csr == NULL) {
173 /* CSR is undefined: write ignored, read old_value as 0. */
178 if (!check_csr_flags(ctx, csr, true)) {
179 /* CSR is readonly: trap. */
184 assert(csr->readfn == NULL);
192 tcg_gen_ld_tl(oldv, tcg_env, csr->offset);
197 writefn = (GenCSRWrite)csr->writefn;
201 tcg_gen_st_tl(newv, tcg_env, csr->offset);