Re: [PATCH v4 36/57] tcg/loongarch64: Assert the host supports unaligned accesses

2023-05-05 Thread Song Gao

Hi,

在 2023/5/5 下午9:24, WANG Xuerui 写道:

Hi,

On 2023/5/3 15:06, Richard Henderson wrote:

This should be true of all server class loongarch64.

And desktop-class (i.e. all Loongson-3 series).


Signed-off-by: Richard Henderson 
---
  tcg/loongarch64/tcg-target.c.inc | 6 ++
  1 file changed, 6 insertions(+)

diff --git a/tcg/loongarch64/tcg-target.c.inc 
b/tcg/loongarch64/tcg-target.c.inc

index e651ec5c71..ccc13ffdb4 100644
--- a/tcg/loongarch64/tcg-target.c.inc
+++ b/tcg/loongarch64/tcg-target.c.inc
@@ -30,6 +30,7 @@
   */
    #include "../tcg-ldst.c.inc"
+#include 
    #ifdef CONFIG_DEBUG_TCG
  static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
@@ -1674,6 +1675,11 @@ static void 
tcg_target_qemu_prologue(TCGContext *s)

    static void tcg_target_init(TCGContext *s)
  {
+    unsigned long hwcap = qemu_getauxval(AT_HWCAP);
+
+    /* All server class loongarch have UAL; only embedded do not. */
+    assert(hwcap & HWCAP_LOONGARCH_UAL);
+
It is a bit worrying that a future SoC (the octa-core Loongson 2K3000) 
might get used for light desktop use cases (e.g. laptops) where QEMU 
is arguably relevant, but it's currently unclear whether its LA364 
micro-architecture will have UAL. The Loongson folks may have more to 
share.

'LA364' support UAL.

Thanks.
Song Gao




Re: [PATCH v4 36/57] tcg/loongarch64: Assert the host supports unaligned accesses

2023-05-05 Thread WANG Xuerui

Hi,

On 2023/5/3 15:06, Richard Henderson wrote:

This should be true of all server class loongarch64.

And desktop-class (i.e. all Loongson-3 series).


Signed-off-by: Richard Henderson 
---
  tcg/loongarch64/tcg-target.c.inc | 6 ++
  1 file changed, 6 insertions(+)

diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
index e651ec5c71..ccc13ffdb4 100644
--- a/tcg/loongarch64/tcg-target.c.inc
+++ b/tcg/loongarch64/tcg-target.c.inc
@@ -30,6 +30,7 @@
   */
  
  #include "../tcg-ldst.c.inc"

+#include 
  
  #ifdef CONFIG_DEBUG_TCG

  static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
@@ -1674,6 +1675,11 @@ static void tcg_target_qemu_prologue(TCGContext *s)
  
  static void tcg_target_init(TCGContext *s)

  {
+unsigned long hwcap = qemu_getauxval(AT_HWCAP);
+
+/* All server class loongarch have UAL; only embedded do not. */
+assert(hwcap & HWCAP_LOONGARCH_UAL);
+
It is a bit worrying that a future SoC (the octa-core Loongson 2K3000) 
might get used for light desktop use cases (e.g. laptops) where QEMU is 
arguably relevant, but it's currently unclear whether its LA364 
micro-architecture will have UAL. The Loongson folks may have more to share.

  tcg_target_available_regs[TCG_TYPE_I32] = ALL_GENERAL_REGS;
  tcg_target_available_regs[TCG_TYPE_I64] = ALL_GENERAL_REGS;
  




Re: [PATCH v4 36/57] tcg/loongarch64: Assert the host supports unaligned accesses

2023-05-05 Thread Peter Maydell
On Wed, 3 May 2023 at 08:15, Richard Henderson
 wrote:
>
> This should be true of all server class loongarch64.

By this do you mean "anything that runs Linux" ?

If not, we should be a bit more user-friendly about bailing
out than just assert()ing. For the "tried to run on an
ARMv5" case we use error_report and exit:

error_report("TCG: ARMv%d is unsupported; exiting", arm_arch);
exit(EXIT_FAILURE);

thanks
-- PMM



[PATCH v4 36/57] tcg/loongarch64: Assert the host supports unaligned accesses

2023-05-03 Thread Richard Henderson
This should be true of all server class loongarch64.

Signed-off-by: Richard Henderson 
---
 tcg/loongarch64/tcg-target.c.inc | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.c.inc
index e651ec5c71..ccc13ffdb4 100644
--- a/tcg/loongarch64/tcg-target.c.inc
+++ b/tcg/loongarch64/tcg-target.c.inc
@@ -30,6 +30,7 @@
  */
 
 #include "../tcg-ldst.c.inc"
+#include 
 
 #ifdef CONFIG_DEBUG_TCG
 static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
@@ -1674,6 +1675,11 @@ static void tcg_target_qemu_prologue(TCGContext *s)
 
 static void tcg_target_init(TCGContext *s)
 {
+unsigned long hwcap = qemu_getauxval(AT_HWCAP);
+
+/* All server class loongarch have UAL; only embedded do not. */
+assert(hwcap & HWCAP_LOONGARCH_UAL);
+
 tcg_target_available_regs[TCG_TYPE_I32] = ALL_GENERAL_REGS;
 tcg_target_available_regs[TCG_TYPE_I64] = ALL_GENERAL_REGS;
 
-- 
2.34.1