Browse Source

csky: fix qemu system emulation

Waldemar Brodkorb 6 years ago
parent
commit
cd0e5af236

+ 0 - 7
mk/vars.mk

@@ -75,13 +75,6 @@ GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-$(ADK_VENDOR)-$(ADK_TARGET_LINUXTYPE)-$
 ifeq ($(ADK_TARGET_ARCH_C6X),y)
 GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-$(ADK_TARGET_LINUXTYPE)
 endif
-ifeq ($(ADK_TARGET_ARCH_CSKY),y)
-ifeq ($(ADK_TARGET_CPU_CSKY_CK610),y)
-GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-unknown-$(ADK_TARGET_LINUXTYPE)
-else
-GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-abiv2-$(ADK_TARGET_LINUXTYPE)
-endif
-endif
 ifeq ($(ADK_TARGET_OS_BAREMETAL),y)
 GNU_TARGET_NAME:=	$(ADK_TARGET_CPU_ARCH)-$(ADK_TARGET_SUFFIX)
 endif

+ 1 - 0
target/config/Config.in.libc

@@ -259,6 +259,7 @@ config ADK_TARGET_SUFFIX
 	default "uclibcabi32" if ADK_TARGET_LIB_UCLIBC_NG && ADK_TARGET_ABI_O32
 	default "uclibc32" if ADK_TARGET_LIB_UCLIBC_NG && ADK_TARGET_ABI_32 && ADK_LINUX_64
 	default "uclibcspe" if ADK_TARGET_LIB_UCLIBC_NG && ADK_TARGET_ARCH_PPC && ADK_TARGET_ARCH_PPC_WITH_SPE
+	default "uclibcabiv2" if ADK_TARGET_LIB_UCLIBC_NG && (ADK_TARGET_CPU_CSKY_CK807 || ADK_TARGET_CPU_CSKY_CK810)
 	default "uclibc" if ADK_TARGET_LIB_UCLIBC_NG
 	default "musleabihf" if ADK_TARGET_LIB_MUSL && ADK_TARGET_ARCH_ARM && ADK_TARGET_HARD_FLOAT
 	default "musleabi" if ADK_TARGET_LIB_MUSL && ADK_TARGET_ARCH_ARM

+ 2 - 2
target/csky/Makefile

@@ -9,13 +9,13 @@ KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
 
 QEMU_ARGS:=${ADK_QEMU_ARGS} -M virt
 ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK610),y)
-QEMU:=qemu-system-cskyv1 -dtb target/csky/ck610.dtb
+QEMU:=qemu-system-cskyv1 -dtb target/csky/qemu.dtb
 endif
 ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK807),y)
 QEMU:=qemu-system-cskyv2 -dtb target/csky/qemu.dtb
 endif
 ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK810),y)
-QEMU:=qemu-system-cskyv2 -dtb target/csky/ck810.dtb
+QEMU:=qemu-system-cskyv2 -dtb target/csky/qemu.dtb
 endif
 
 # target helper text

BIN
target/csky/ck610.dtb


+ 0 - 98
target/csky/ck610.dts

@@ -1,98 +0,0 @@
-/dts-v1/;
-
-/ {
-	model = "qemu.csky.ck610";
-	compatible = "csky";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	memory {
-		device_type = "memory";
-		reg = <0x0 0x1f400000>;
-	};
-
-	cpus {
-		#address-cells = <0>;
-		#size-cells = <0>;
-
-		cpu {
-			device_type = "cpu";
-			ccr	= <0x7d>;
-			hint	= <0x1c>;
-		};
-	};
-
-	soc {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "simple-bus";
-		ranges;
-
-		dummy_apb: apb-clock {
-			compatible = "fixed-clock";
-			clock-frequency = <40000000>;
-			clock-output-names = "dummy_apb";
-			#clock-cells = <0>;
-		};
-
-		intc: interrupt-controller {
-			compatible = "csky,intc-v1";
-			reg = <0x1ffff000 0x1000>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		/* clockevent */
-		timer0 {
-			compatible = "snps,dw-apb-timer";
-			reg = <0x1fffd000 0x1000>;
-			clocks = <&dummy_apb>;
-			clock-names = "timer";
-			interrupts = <1>;
-			interrupt-parent = <&intc>;
-		};
-
-		/* clocksource */
-		timer1 {
-			compatible = "snps,dw-apb-timer";
-			reg = <0x1fffd014 0x800>;
-			clocks = <&dummy_apb>;
-			clock-names = "timer";
-			interrupts = <2>;
-			interrupt-parent = <&intc>;
-		};
-
-		serial0 {
-			compatible = "ns16550a";
-			reg = <0x1fffe000 0x1000>;
-			interrupt-parent = <&intc>;
-			interrupts = <3>;
-			clocks = <&dummy_apb>;
-			baud = <115200>;
-			reg-shift = <2>;
-			reg-io-width = <1>;
-		};
-
-		gmac: ethernet {
-			compatible = "snps,dwmac";
-			reg = <0x1fffa000 0x2000>;
-			interrupt-parent = <&intc>;
-			interrupts = <4>;
-			interrupt-names = "macirq";
-			clocks = <&dummy_apb>;
-			clock-names = "stmmaceth";
-			phy-mode = "mii";
-			snps,pbl = <32>;
-			snps,fixed-burst;
-		};
-
-		qemu-exit {
-			compatible = "csky,qemu-exit";
-			reg = <0x1fffc000 0x1000>;
-		};
-	};
-
-	chosen {
-		bootargs = "console=ttyS0,115200";
-	};
-};

BIN
target/csky/ck810.dtb


+ 0 - 98
target/csky/ck810.dts

@@ -1,98 +0,0 @@
-/dts-v1/;
-
-/ {
-	model = "qemu.csky.ck810";
-	compatible = "csky";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	memory {
-		device_type = "memory";
-		reg = <0x0 0x1f400000>;
-	};
-
-	cpus {
-		#address-cells = <0>;
-		#size-cells = <0>;
-
-		cpu {
-			device_type = "cpu";
-			ccr	= <0x417d>;
-			hint	= <0xe>;
-		};
-	};
-
-	soc {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "simple-bus";
-		ranges;
-
-		intc: interrupt-controller {
-			compatible = "csky,intc-v1";
-			reg = <0x1ffff000 0x1000>;
-			interrupt-controller;
-			#interrupt-cells = <1>;
-		};
-
-		/* clockevent */
-		timer0 {
-			compatible = "snps,dw-apb-timer";
-			reg = <0x1fffd000 0x1000>;
-			clocks = <&dummy_apb>;
-			clock-names = "timer";
-			interrupts = <1>;
-			interrupt-parent = <&intc>;
-		};
-
-		/* clocksource */
-		timer1 {
-			compatible = "snps,dw-apb-timer";
-			reg = <0x1fffd014 0x800>;
-			clocks = <&dummy_apb>;
-			clock-names = "timer";
-			interrupts = <2>;
-			interrupt-parent = <&intc>;
-		};
-
-		serial0 {
-			compatible = "ns16550a";
-			reg = <0x1fffe000 0x1000>;
-			interrupt-parent = <&intc>;
-			interrupts = <3>;
-			clocks = <&dummy_apb>;
-			baud = <115200>;
-			reg-shift = <2>;
-			reg-io-width = <1>;
-		};
-
-		dummy_apb: apb-clock {
-			compatible = "fixed-clock";
-			clock-frequency = <40000000>;
-			clock-output-names = "dummy_apb";
-			#clock-cells = <0>;
-		};
-
-		gmac: ethernet {
-			compatible = "snps,dwmac";
-			reg = <0x1fffa000 0x2000>;
-			interrupt-parent = <&intc>;
-			interrupts = <4>;
-			interrupt-names = "macirq";
-			clocks = <&dummy_apb>;
-			clock-names = "stmmaceth";
-			phy-mode = "mii";
-			snps,pbl = <32>;
-			snps,fixed-burst;
-		};
-
-		qemu-exit {
-			compatible = "csky,qemu-exit";
-			reg = <0x1fffc000 0x1000>;
-		};
-	};
-
-	chosen {
-		bootargs = "console=ttyS0,115200 rdinit=/sbin/init root=/dev/ram0";
-	};
-};

+ 0 - 3
target/csky/kernel/qemu-csky-ck610

@@ -5,7 +5,4 @@ CONFIG_RAM_BASE=0x0
 CONFIG_NATIONALCHIP_IRQ=y
 CONFIG_NATIONALCHIP_TIMER=y
 CONFIG_CSKYMAC=y
-CONFIG_CSKY_ADDONS=y
-CONFIG_MMU_HARD_REFILL=y
-CONFIG_SOFT_HANDMISSALIGN=y
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y

+ 5 - 0
target/csky/kernel/qemu-csky-ck807

@@ -1,3 +1,8 @@
 CONFIG_CSKY=y
 CONFIG_CPU_CK807=y
+CONFIG_CSKY_IRQ=y
+CONFIG_RAM_BASE=0x0
+CONFIG_NATIONALCHIP_IRQ=y
+CONFIG_NATIONALCHIP_TIMER=y
+CONFIG_CSKYMAC=y
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y

+ 0 - 3
target/csky/kernel/qemu-csky-ck810

@@ -5,7 +5,4 @@ CONFIG_RAM_BASE=0x0
 CONFIG_NATIONALCHIP_IRQ=y
 CONFIG_NATIONALCHIP_TIMER=y
 CONFIG_CSKYMAC=y
-CONFIG_CSKY_ADDONS=y
-CONFIG_MMU_HARD_REFILL=y
-CONFIG_SOFT_HANDMISSALIGN=y
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y

BIN
target/csky/qemu.dtb


+ 1 - 1
target/csky/qemu.dts

@@ -82,6 +82,6 @@
 	};
 
 	chosen {
-		bootargs = "console=ttyS0,115200 rdinit=/sbin/init root=/dev/ram0";
+		bootargs = "console=ttyS0,115200";
 	};
 };

+ 1 - 0
target/csky/systems/qemu-csky-ck610

@@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_QEMU_CSKY_CK610
 	bool "Qemu Emulator (ck610)"
 	select ADK_TARGET_QEMU
 	select ADK_TARGET_CPU_CSKY_CK610
+	select ADK_TARGET_KERNEL_WITH_COMPRESSION
 	help
 	  Qemu Emulator for C-SKY architecture (ck610).
 

+ 1 - 0
target/csky/systems/qemu-csky-ck807

@@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
 	bool "Qemu Emulator (ck807)"
 	select ADK_TARGET_QEMU
 	select ADK_TARGET_CPU_CSKY_CK807
+	select ADK_TARGET_KERNEL_WITH_COMPRESSION
 	help
 	  Qemu Emulator for C-SKY architecture (ck807).
 

+ 1 - 0
target/csky/systems/qemu-csky-ck810

@@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
 	bool "Qemu Emulator (ck810)"
 	select ADK_TARGET_QEMU
 	select ADK_TARGET_CPU_CSKY_CK810
+	select ADK_TARGET_KERNEL_WITH_COMPRESSION
 	help
 	  Qemu Emulator for C-SKY architecture (ck810).
 

+ 12 - 0
toolchain/gcc/patches/gcc-6-branch-csky/gcc7.patch

@@ -0,0 +1,12 @@
+diff -Nur gcc-gcc-6-branch-csky.orig/gcc/ubsan.c gcc-gcc-6-branch-csky/gcc/ubsan.c
+--- gcc-gcc-6-branch-csky.orig/gcc/ubsan.c	2018-03-10 14:10:55.000000000 +0100
++++ gcc-gcc-6-branch-csky/gcc/ubsan.c	2018-03-10 21:16:06.358370414 +0100
+@@ -1471,7 +1471,7 @@
+ 
+   expanded_location xloc = expand_location (loc);
+   if (xloc.file == NULL || strncmp (xloc.file, "\1", 2) == 0
+-      || xloc.file == '\0' || xloc.file[0] == '\xff'
++      || xloc.file[0] == '\0' || xloc.file[0] == '\xff'
+       || xloc.file[1] == '\xff')
+     return false;
+