qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 2/8] riscv: Generate payload scripts


From: LIU Zhiwei
Subject: Re: [RFC PATCH 2/8] riscv: Generate payload scripts
Date: Wed, 20 May 2020 10:37:53 +0800
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0

On 2020/5/12 1:40, Richard Henderson wrote:
On 4/30/20 12:21 AM, LIU Zhiwei wrote:
+    # sequence of li rd, 0x1234567887654321
+    #
+    #  0:   002471b7                lui     rd,0x247
+    #  4:   8ad1819b                addiw   rd,rd,-1875
+    #  8:   00c19193                slli    rd,rd,0xc
+    #  c:   f1118193                addi    rd,rd,-239 # 0x246f11
+    # 10:   00d19193                slli    rd,rd,0xd
+    # 14:   d9518193                addi    rd,rd,-619
+    # 18:   00e19193                slli    rd,rd,0xe
+    # 1c:   32118193                addi    rd,rd,801
You don't really need to use addiw.  Removing that special case would really
simplify this.
I think I don't get it. Do you mean that the immediate will not be 64 bit?
+sub write_memblock_setup()
+{
+    # Write code which sets up the memory block for loads and stores.
+    # We set r0 to point to a block of 16K length
+    # of random data, aligned to the maximum desired alignment.
+
+    my $align = $MAXALIGN;
+    my $datalen = 16384 + $align;
risu.h:#define MEMBLOCKLEN 8192

Why are you using 16384?
It's a bug.

Once I thought I should make it bigger to support  vector in the future .
And  even that, 8K byts is also enough, as the most bytes operates in one instruction
is LMUL * RV_VLEN_MAX  / 8 = 512 Bytes.

Zhiwei

Also, typo -- you're setting r10 not r0, obviously.

The rest looks fine.


r~




reply via email to

[Prev in Thread] Current Thread [Next in Thread]