- Introduction

  LoongArch is the general processor architecture of Loongson.

  The following versions of the LoongArch core are supported
    core: 3A5000
    https://github.com/loongson/LoongArch-Documentation/releases/download/2021.08.17/LoongArch-Vol1-v1.00-EN.pdf

  We can get the latest loongarch documents at https://github.com/loongson/LoongArch-Documentation/tags.


- System emulation

  Mainly emulate a virt 3A5000 board and ls7a bridge that is not exactly the same as the host.
  3A5000 support multiple interrupt cascading while here we just emulate the extioi interrupt
  cascading. LS7A1000 host bridge support multiple devices, such as sata, gmac, uart, rtc
  and so on. But we just realize the rtc. Others use the qemu common devices. It does not affect
  the general use. We also introduced the emulation of devices at docs/system/loongarch/loongson3.rst.

  This version only supports running binary files in ELF format, and does not depend on BIOS and kernel file.
  You can compile the test program with 'make & make check-tcg' and run the test case with the following command:

  1. Install LoongArch cross-tools on X86 machines.

    Download cross-tools.

      wget https://github.com/loongson/build-tools/releases/latest/download/loongarch64-clfs-20211202-cross-tools.tar.xz

      tar -vxf loongarch64-clfs-20211202-cross-tools.tar.xz -C /opt

    Config cross-tools env.

      . setenv.sh

      setenv.sh:

          #!/bin/sh
          set -x
          CC_PREFIX=/opt/cross-tools

          export PATH=$CC_PREFIX/bin:$PATH
          export LD_LIBRARY_PATH=$CC_PREFIX/lib:$LD_LIBRARY_PATH
          export LD_LIBRARY_PATH=$CC_PREFIX/loongarch64-unknown-linux-gnu/lib/:$LD_LIBRARY_PATH
          set +x

  2. Test tests/tcg/multiarch.

    ./configure --disable-rdma --disable-pvrdma --prefix=/usr  \
            --target-list="loongarch64-softmmu"  \
            --disable-libiscsi --disable-libnfs --disable-libpmem \
            --disable-glusterfs --enable-libusb --enable-usb-redir \
            --disable-opengl --disable-xen --enable-spice --disable-werror \
            --enable-debug --disable-capstone --disable-kvm --enable-profiler

    cd  build/

    make && make check-tcg

    or

    ./build/qemu-system-loongarch64 -machine virt -m 4G -cpu Loongson-3A5000 -smp 1 -kernel build/tests/tcg/loongarch64-softmmu/hello -monitor none -display none -chardev file,path=hello.out,id=output -serial chardev:output

- Note.
  We can get the latest LoongArch documents or LoongArch tools at https://github.com/loongson/
