diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes-recipe/siteinfo.bbclass | 4 | ||||
-rw-r--r-- | meta/conf/machine-sdk/loongarch64.conf | 2 | ||||
-rw-r--r-- | meta/conf/machine/include/loongarch/arch-loongarch.inc | 7 | ||||
-rw-r--r-- | meta/conf/machine/include/loongarch/qemuloongarch.inc | 35 | ||||
-rw-r--r-- | meta/conf/machine/include/loongarch/tune-loongarch.inc | 13 | ||||
-rw-r--r-- | meta/conf/machine/qemuloongarch64.conf | 11 | ||||
-rw-r--r-- | meta/lib/oe/elf.py | 2 | ||||
-rw-r--r-- | meta/recipes-devtools/meson/meson_1.0.0.bb | 2 | ||||
-rw-r--r-- | meta/recipes-devtools/qemu/qemu.inc | 2 | ||||
-rw-r--r-- | meta/site/loongarch64-linux | 11 |
10 files changed, 88 insertions, 1 deletions
diff --git a/meta/classes-recipe/siteinfo.bbclass b/meta/classes-recipe/siteinfo.bbclass index d31c9b2571..05253ae90d 100644 --- a/meta/classes-recipe/siteinfo.bbclass +++ b/meta/classes-recipe/siteinfo.bbclass | |||
@@ -39,6 +39,8 @@ def siteinfo_data_for_machine(arch, os, d): | |||
39 | "i686": "endian-little bit-32 ix86-common", | 39 | "i686": "endian-little bit-32 ix86-common", |
40 | "ia64": "endian-little bit-64", | 40 | "ia64": "endian-little bit-64", |
41 | "lm32": "endian-big bit-32", | 41 | "lm32": "endian-big bit-32", |
42 | "loongarch32": "endian-little bit-32 loongarch", | ||
43 | "loongarch64": "endian-little bit-64 loongarch", | ||
42 | "m68k": "endian-big bit-32", | 44 | "m68k": "endian-big bit-32", |
43 | "microblaze": "endian-big bit-32 microblaze-common", | 45 | "microblaze": "endian-big bit-32 microblaze-common", |
44 | "microblazeel": "endian-little bit-32 microblaze-common", | 46 | "microblazeel": "endian-little bit-32 microblaze-common", |
@@ -97,6 +99,8 @@ def siteinfo_data_for_machine(arch, os, d): | |||
97 | "arm-linux-musleabi": "arm-linux", | 99 | "arm-linux-musleabi": "arm-linux", |
98 | "armeb-linux-gnueabi": "armeb-linux", | 100 | "armeb-linux-gnueabi": "armeb-linux", |
99 | "armeb-linux-musleabi": "armeb-linux", | 101 | "armeb-linux-musleabi": "armeb-linux", |
102 | "loongarch32-linux": "loongarch32-linux", | ||
103 | "loongarch64-linux": "loongarch64-linux", | ||
100 | "microblazeel-linux" : "microblaze-linux", | 104 | "microblazeel-linux" : "microblaze-linux", |
101 | "microblazeel-linux-musl" : "microblaze-linux", | 105 | "microblazeel-linux-musl" : "microblaze-linux", |
102 | "mips-linux-musl": "mips-linux", | 106 | "mips-linux-musl": "mips-linux", |
diff --git a/meta/conf/machine-sdk/loongarch64.conf b/meta/conf/machine-sdk/loongarch64.conf new file mode 100644 index 0000000000..40bf0039ea --- /dev/null +++ b/meta/conf/machine-sdk/loongarch64.conf | |||
@@ -0,0 +1,2 @@ | |||
1 | SDK_ARCH = "loongarch64" | ||
2 | ABIEXTENSION:class-nativesdk = "" | ||
diff --git a/meta/conf/machine/include/loongarch/arch-loongarch.inc b/meta/conf/machine/include/loongarch/arch-loongarch.inc new file mode 100644 index 0000000000..4b44614035 --- /dev/null +++ b/meta/conf/machine/include/loongarch/arch-loongarch.inc | |||
@@ -0,0 +1,7 @@ | |||
1 | # LoongArch Architecture definition | ||
2 | |||
3 | DEFAULTTUNE ?= "loongarch64" | ||
4 | |||
5 | TUNE_ARCH = "${TUNE_ARCH:tune-${DEFAULTTUNE}}" | ||
6 | TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}" | ||
7 | TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'loongarch64', ' -march=la464 -mabi=lp64d', ' ', d)}" | ||
diff --git a/meta/conf/machine/include/loongarch/qemuloongarch.inc b/meta/conf/machine/include/loongarch/qemuloongarch.inc new file mode 100644 index 0000000000..77245ff85d --- /dev/null +++ b/meta/conf/machine/include/loongarch/qemuloongarch.inc | |||
@@ -0,0 +1,35 @@ | |||
1 | PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" | ||
2 | |||
3 | require conf/machine/include/qemu.inc | ||
4 | require conf/machine/include/loongarch/tune-loongarch.inc | ||
5 | |||
6 | MACHINE_FEATURES = "screen keyboard ext2 ext3 serial" | ||
7 | |||
8 | KERNEL_IMAGETYPE = "vmlinuz" | ||
9 | KERNEL_IMAGETYPES += "vmlinuz" | ||
10 | KEEPUIMAGE = "no" | ||
11 | |||
12 | SERIAL_CONSOLES ?= "115200;ttyS0 115200;hvc0" | ||
13 | |||
14 | IMAGE_FSTYPES += "ext4 wic.qcow2" | ||
15 | |||
16 | WKS_FILE ?= "qemuloongarch.wks" | ||
17 | |||
18 | MACHINE_EXTRA_RRECOMMENDS += " kernel-modules" | ||
19 | |||
20 | #EXTRA_IMAGEDEPENDS += "opensbi" | ||
21 | |||
22 | UBOOT_ENTRYPOINT_loongarch32 = "0x80400000" | ||
23 | UBOOT_ENTRYPOINT_loongarch64 = "0x80200000" | ||
24 | |||
25 | # qemuboot options | ||
26 | QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi" | ||
27 | QB_MACHINE = "-machine virt" | ||
28 | QB_DEFAULT_BIOS = "fw_jump.elf" | ||
29 | QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" | ||
30 | QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@" | ||
31 | QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0" | ||
32 | QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon" | ||
33 | QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon" | ||
34 | # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy | ||
35 | QB_OPT_APPEND = " -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0" | ||
diff --git a/meta/conf/machine/include/loongarch/tune-loongarch.inc b/meta/conf/machine/include/loongarch/tune-loongarch.inc new file mode 100644 index 0000000000..f02ddda474 --- /dev/null +++ b/meta/conf/machine/include/loongarch/tune-loongarch.inc | |||
@@ -0,0 +1,13 @@ | |||
1 | require conf/machine/include/loongarch/arch-loongarch.inc | ||
2 | |||
3 | TUNEVALID[loongarch64] = "Enable 64-bit LoongArch optimizations" | ||
4 | |||
5 | TUNEVALID[littleendian] = "Little endian mode" | ||
6 | |||
7 | AVAILTUNES += "loongarch64" | ||
8 | |||
9 | # Default | ||
10 | TUNE_FEATURES:tune-loongarch64 = "loongarch64" | ||
11 | TUNE_ARCH:tune-loongarch64 = "loongarch64" | ||
12 | TUNE_PKGARCH:tune-loongarch64 = "loongarch64" | ||
13 | PACKAGE_EXTRA_ARCHS:tune-loongarch64 = "loongarch64" | ||
diff --git a/meta/conf/machine/qemuloongarch64.conf b/meta/conf/machine/qemuloongarch64.conf new file mode 100644 index 0000000000..675d525afd --- /dev/null +++ b/meta/conf/machine/qemuloongarch64.conf | |||
@@ -0,0 +1,11 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@NAME: generic loongarch64 machine | ||
3 | #@DESCRIPTION: Machine configuration for running a generic loongarch64 | ||
4 | |||
5 | require conf/machine/include/loongarch/qemuloongarch.inc | ||
6 | |||
7 | XVISOR_PLAT = "loongarch/virt64" | ||
8 | |||
9 | EXTRA_IMAGEDEPENDS += "u-boot" | ||
10 | UBOOT_MACHINE = "qemu-loongarch64_smode_defconfig" | ||
11 | UBOOT_ELF = "u-boot" | ||
diff --git a/meta/lib/oe/elf.py b/meta/lib/oe/elf.py index fb07995b3e..eab2349a4f 100644 --- a/meta/lib/oe/elf.py +++ b/meta/lib/oe/elf.py | |||
@@ -21,6 +21,7 @@ def machine_dict(d): | |||
21 | "x86_64": (62, 0, 0, True, 64), | 21 | "x86_64": (62, 0, 0, True, 64), |
22 | "epiphany": (4643, 0, 0, True, 32), | 22 | "epiphany": (4643, 0, 0, True, 32), |
23 | "lm32": (138, 0, 0, False, 32), | 23 | "lm32": (138, 0, 0, False, 32), |
24 | "loongarch64":(258, 0, 0, True, 64), | ||
24 | "mips": ( 8, 0, 0, False, 32), | 25 | "mips": ( 8, 0, 0, False, 32), |
25 | "mipsel": ( 8, 0, 0, True, 32), | 26 | "mipsel": ( 8, 0, 0, True, 32), |
26 | "microblaze": (189, 0, 0, False, 32), | 27 | "microblaze": (189, 0, 0, False, 32), |
@@ -45,6 +46,7 @@ def machine_dict(d): | |||
45 | "ia64": (50, 0, 0, True, 64), | 46 | "ia64": (50, 0, 0, True, 64), |
46 | "alpha": (36902, 0, 0, True, 64), | 47 | "alpha": (36902, 0, 0, True, 64), |
47 | "hppa": (15, 3, 0, False, 32), | 48 | "hppa": (15, 3, 0, False, 32), |
49 | "loongarch64":(258, 0, 0, True, 64), | ||
48 | "m68k": ( 4, 0, 0, False, 32), | 50 | "m68k": ( 4, 0, 0, False, 32), |
49 | "mips": ( 8, 0, 0, False, 32), | 51 | "mips": ( 8, 0, 0, False, 32), |
50 | "mipsel": ( 8, 0, 0, True, 32), | 52 | "mipsel": ( 8, 0, 0, True, 32), |
diff --git a/meta/recipes-devtools/meson/meson_1.0.0.bb b/meta/recipes-devtools/meson/meson_1.0.0.bb index a7740cc6dd..578dfb9d64 100644 --- a/meta/recipes-devtools/meson/meson_1.0.0.bb +++ b/meta/recipes-devtools/meson/meson_1.0.0.bb | |||
@@ -66,6 +66,8 @@ def generate_native_link_template(d): | |||
66 | loader = 'ld-linux-aarch64.so.1' | 66 | loader = 'ld-linux-aarch64.so.1' |
67 | elif 'ppc64le' in build_arch: | 67 | elif 'ppc64le' in build_arch: |
68 | loader = 'ld64.so.2' | 68 | loader = 'ld64.so.2' |
69 | elif 'loongarch64' in build_arch: | ||
70 | loader = 'ld-linux-loongarch-lp64d.so.1' | ||
69 | 71 | ||
70 | if loader: | 72 | if loader: |
71 | val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader] | 73 | val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader] |
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc index 80f6edd2b9..92828e8f2d 100644 --- a/meta/recipes-devtools/qemu/qemu.inc +++ b/meta/recipes-devtools/qemu/qemu.inc | |||
@@ -86,7 +86,7 @@ do_install_ptest() { | |||
86 | } | 86 | } |
87 | 87 | ||
88 | # QEMU_TARGETS is overridable variable | 88 | # QEMU_TARGETS is overridable variable |
89 | QEMU_TARGETS ?= "arm aarch64 i386 mips mipsel mips64 mips64el ppc ppc64 ppc64le riscv32 riscv64 sh4 x86_64" | 89 | QEMU_TARGETS ?= "arm aarch64 i386 loongarch64 mips mipsel mips64 mips64el ppc ppc64 ppc64le riscv32 riscv64 sh4 x86_64" |
90 | 90 | ||
91 | EXTRA_OECONF = " \ | 91 | EXTRA_OECONF = " \ |
92 | --prefix=${prefix} \ | 92 | --prefix=${prefix} \ |
diff --git a/meta/site/loongarch64-linux b/meta/site/loongarch64-linux new file mode 100644 index 0000000000..38bc5f044d --- /dev/null +++ b/meta/site/loongarch64-linux | |||
@@ -0,0 +1,11 @@ | |||
1 | # general | ||
2 | ac_cv_alignof_guint32=4 | ||
3 | ac_cv_alignof_guint64=8 | ||
4 | ac_cv_alignof_unsigned_long=8 | ||
5 | |||
6 | # glib-2.0 | ||
7 | glib_cv_stack_grows=${glib_cv_stack_grows=no} | ||
8 | glib_cv_uscore=${glib_cv_uscore=no} | ||
9 | |||
10 | # startup-notification | ||
11 | lf_cv_sane_realloc=${lf_cv_sane_realloc=yes} | ||