On 10/2/22 07:52, BitFriends wrote:
my bad, then I was mislead by "Which is, in general, what you want for implementing a custom instruction". Also the code around me is full of gen instructions, so I thought that's what I should use.

So, when reading the doc I found out about the cpu_{ld,st}*_mmu functions. That sounds more what I want for a direct action, No?

That all depends on where you're putting the code. Based on what you've written so far, I'd guess the answer is still no. But you haven't been overly verbose about what you're trying to do.


r~


Regards

BitFriends

Richard Henderson <richard.hender...@linaro.org <mailto:richard.hender...@linaro.org>> schrieb am So., 2. Okt. 2022, 16:40:

    On 10/2/22 02:20, BitFriends wrote:
     > I now came up with this code:
     >
     > TCGv_i64 res = 0;
     > TCGv_i64 addr = (TCGv_i64)(env->regs[R_EDI]);
     >
     > tcg_gen_qemu_ld_i64(res, addr, 0, MO_LEUQ);
     >
     > env->regs[R_EAX] = (target_ulong)res;
     >
     > However this crashes afterwards in test_bit. Maybe this is caused by an 
invalid
    access?
     > Anything wrong about the code? This still gives some warnings, like 
TCGv_i32
    expected (and
     > when you use TCGv_i32, it says TCGv_i64 expected) plus some casting 
warnings.

    It is as if you did not read the second paragraph of my response at all.
    tcg_gen_qemu_ld_i64 is for generating code, not performing a direct action.
    Can you see how your code differs from *all* of the code around it?

    r~

     >
     > Am Sa., 1. Okt. 2022 um 22:23 Uhr schrieb Richard Henderson
    <richard.hender...@linaro.org <mailto:richard.hender...@linaro.org>
     > <mailto:richard.hender...@linaro.org 
<mailto:richard.hender...@linaro.org>>>:
     >
     >     On 10/1/22 13:10, BitFriends wrote:
     >      > Hello,
     >      >
     >      > I am trying to create a custom instruction that accesses guest 
memory
    specified by an
     >      > address in a register. I specifically want to read from that 
address. So I
    tried to do
     >      > that using "tcg_gen_qemu_ld_i64(&res, env->regs[R_EDI], 0, 
MO_LEUQ);", but that
     >     doesn't
     >      > save any result in res.
     >
     >     This statement should have given you compilation errors, so I don't 
know what
    you mean by
     >     "doesn't save any result".  There's clearly a disconnect between 
what you
    describe and
     >     what you actually attempted.
     >
     >     Anyway, by the name you can see that function "gen"erates a "tcg" 
operation,
    which is
     >     then
     >     later compiled by the jit, the output of which is later executed to 
produce a
    result.
     >     Which is, in general, what you want for implementing a custom 
instruction.
     >
     >
     >     r~
     >



Reply via email to