summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/alpha/Makefile13
-rw-r--r--target/alpha/systems/dec-multia5
-rw-r--r--target/config/Config.in.kernelfmt8
-rw-r--r--target/config/Config.in.rootfs4
-rw-r--r--target/linux/config/Config.in.serial2
-rw-r--r--target/linux/patches/4.9.71/alpha-remove-coff.patch43
6 files changed, 72 insertions, 3 deletions
diff --git a/target/alpha/Makefile b/target/alpha/Makefile
index 2d58e8014..5ce6bbea2 100644
--- a/target/alpha/Makefile
+++ b/target/alpha/Makefile
@@ -6,6 +6,9 @@ include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/vmlinux
+ifeq ($(ADK_TARGET_SYSTEM_DEC_MULTIA),y)
+KERNEL:=$(LINUX_DIR)/arch/alpha/boot/bootpfile
+endif
QEMU_ARGS:=-monitor null
QEMU_ARGS+=${ADK_QEMU_ARGS}
@@ -52,14 +55,22 @@ ifeq ($(ADK_TARGET_FS),nfsroot)
targethelp:
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
@echo 'The nfs root tarball is: ${FW_DIR}/${ROOTFSUSERTARBALL}'
+ifeq ($(ADK_TARGET_SYSTEM_DEC_MULTIA),y)
+ @echo 'To netboot the Dec multia type following in SRM console:'
+ @echo '>>>boot ewa0 -protocols bootp -fl "root=/dev/nfs ip=dhcp"'
+endif
endif
# image creation and kernel install
kernel-strip:
+ifeq ($(ADK_TARGET_SYSTEM_DEC_MULTIA),y)
+ cp $(KERNEL) $(BUILD_DIR)/${TARGET_KERNEL}
+else
$(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
+endif
kernel-install: kernel-strip
- @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
+ cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
diff --git a/target/alpha/systems/dec-multia b/target/alpha/systems/dec-multia
index f92a55448..badef7e87 100644
--- a/target/alpha/systems/dec-multia
+++ b/target/alpha/systems/dec-multia
@@ -1,7 +1,10 @@
config ADK_TARGET_SYSTEM_DEC_MULTIA
bool "Digital Multia"
select ADK_TARGET_CPU_ALPHA_EV4
- select ADK_TARGET_KERNEL_WITH_COMPRESSION
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_KERNEL_VMLINUX_BOOTP
help
Support for DEC Multia. See:
https://en.wikipedia.org/wiki/DEC_Multia
diff --git a/target/config/Config.in.kernelfmt b/target/config/Config.in.kernelfmt
index 4176ab53a..e2fc675c3 100644
--- a/target/config/Config.in.kernelfmt
+++ b/target/config/Config.in.kernelfmt
@@ -28,6 +28,12 @@ config ADK_TARGET_KERNEL_VMLINUX_AOUT
config ADK_TARGET_KERNEL_VMLINUX_BIN
bool
+config ADK_TARGET_KERNEL_VMLINUX_BOOTP
+ bool
+
+config ADK_TARGET_KERNEL_VMLINUX_GZ
+ bool
+
config ADK_TARGET_KERNEL_VMLINUX_SREC
bool
@@ -45,6 +51,8 @@ config ADK_TARGET_KERNEL
default "image" if ADK_TARGET_KERNEL_VMLINUX_AOUT
default "vmlinux.srec" if ADK_TARGET_KERNEL_VMLINUX_SREC
default "vmlinux.bin" if ADK_TARGET_KERNEL_VMLINUX_BIN
+ default "bootpfile" if ADK_TARGET_KERNEL_VMLINUX_BOOTP
+ default "vmlinux.gz" if ADK_TARGET_KERNEL_VMLINUX_GZ
default "xipImage" if ADK_TARGET_KERNEL_XIPIMAGE
default "bzImage" if ADK_TARGET_KERNEL_BZIMAGE
default "bzImage" if ADK_TARGET_SYSTEM_GENERIC_X86_64 || ADK_TARGET_SYSTEM_GENERIC_X86
diff --git a/target/config/Config.in.rootfs b/target/config/Config.in.rootfs
index 95704e5ba..36d252570 100644
--- a/target/config/Config.in.rootfs
+++ b/target/config/Config.in.rootfs
@@ -14,6 +14,7 @@ config ADK_TARGET_ROOTFS_INITRAMFSPIGGYBACK
ADK_TARGET_QEMU || \
ADK_TARGET_SIM || \
ADK_TARGET_ARCH_AARCH64 || \
+ ADK_TARGET_ARCH_ALPHA || \
ADK_TARGET_ARCH_ARC || \
ADK_TARGET_ARCH_ARM || \
ADK_TARGET_ARCH_H8300 || \
@@ -35,8 +36,9 @@ config ADK_TARGET_ROOTFS_INITRAMFS
bool "initramfs filesystem"
depends on \
ADK_TARGET_QEMU || \
- ADK_TARGET_ARCH_M68K || \
+ ADK_TARGET_ARCH_ALPHA || \
ADK_TARGET_ARCH_ARM || \
+ ADK_TARGET_ARCH_M68K || \
ADK_TARGET_ARCH_MICROBLAZE || \
ADK_TARGET_ARCH_MIPS || \
ADK_TARGET_ARCH_MIPS64 || \
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
index 987ad5188..6511bc5a2 100644
--- a/target/linux/config/Config.in.serial
+++ b/target/linux/config/Config.in.serial
@@ -127,6 +127,7 @@ config ADK_KERNEL_SERIAL_8250
|| ADK_TARGET_SYSTEM_MIKROTIK_RB4XX \
|| ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG \
|| ADK_TARGET_SYSTEM_ORANGE_PI0 \
+ || ADK_TARGET_SYSTEM_DEC_MULTIA \
|| ADK_TARGET_SYSTEM_SOM_C6745
default y if ADK_TARGET_SYSTEM_XILINX_KINTEX7
default y if ADK_TARGET_SYSTEM_IMGTEC_CI20
@@ -155,6 +156,7 @@ config ADK_KERNEL_SERIAL_8250
default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default y if ADK_TARGET_SYSTEM_ORANGE_PI0
default y if ADK_TARGET_SYSTEM_SOM_C6745
+ default y if ADK_TARGET_SYSTEM_DEC_MULTIA
default n
help
Serial driver for 8250 UART chip.
diff --git a/target/linux/patches/4.9.71/alpha-remove-coff.patch b/target/linux/patches/4.9.71/alpha-remove-coff.patch
new file mode 100644
index 000000000..176db3c88
--- /dev/null
+++ b/target/linux/patches/4.9.71/alpha-remove-coff.patch
@@ -0,0 +1,43 @@
+diff -Nur linux-4.9.71.orig/arch/alpha/boot/tools/objstrip.c linux-4.9.71/arch/alpha/boot/tools/objstrip.c
+--- linux-4.9.71.orig/arch/alpha/boot/tools/objstrip.c 2017-12-20 10:07:34.000000000 +0100
++++ linux-4.9.71/arch/alpha/boot/tools/objstrip.c 2017-12-30 21:23:09.114510547 +0100
+@@ -191,38 +191,8 @@
+ prog_name, (long) elf_phdr->p_vaddr,
+ elf_phdr->p_vaddr + fil_size, offset);
+ }
+- } else
+-#endif
+- {
+- aout = (struct exec *) buf;
+-
+- if (!(aout->fh.f_flags & COFF_F_EXEC)) {
+- fprintf(stderr, "%s: %s is not in executable format\n",
+- prog_name, inname);
+- exit(1);
+- }
+-
+- if (aout->fh.f_opthdr != sizeof(aout->ah)) {
+- fprintf(stderr, "%s: %s has unexpected optional header size\n",
+- prog_name, inname);
+- exit(1);
+- }
+-
+- if (N_MAGIC(*aout) != OMAGIC) {
+- fprintf(stderr, "%s: %s is not an OMAGIC file\n",
+- prog_name, inname);
+- exit(1);
+- }
+- offset = N_TXTOFF(*aout);
+- fil_size = aout->ah.tsize + aout->ah.dsize;
+- mem_size = fil_size + aout->ah.bsize;
+-
+- if (verbose) {
+- fprintf(stderr, "%s: extracting %#016lx-%#016lx (at %lx)\n",
+- prog_name, aout->ah.text_start,
+- aout->ah.text_start + fil_size, offset);
+- }
+ }
++#endif
+
+ if (lseek(fd, offset, SEEK_SET) != offset) {
+ perror("lseek");