aboutsummaryrefslogtreecommitdiffstats
path: root/src/mkkerneldoth.s390
diff options
context:
space:
mode:
Diffstat (limited to 'src/mkkerneldoth.s390')
-rwxr-xr-xsrc/mkkerneldoth.s39033
1 files changed, 26 insertions, 7 deletions
diff --git a/src/mkkerneldoth.s390 b/src/mkkerneldoth.s390
index 137c15ec..d6629d95 100755
--- a/src/mkkerneldoth.s390
+++ b/src/mkkerneldoth.s390
@@ -3,19 +3,38 @@
# Generate a header that defines the boot kernel.
#
-KVER=`uname -r | sed 's/[^a-zA-Z]//g'`
+KERNEL_TYPE=`uname -r | sed 's_^.*\(tape\)$_-\1_;t;s_.*__;'`
+KERNEL_RELEASE=`uname -r | sed 's|tape||g'`
-cat > /boot/kernel.h << EOF
-/* This file is automatically generated at boot time. */
+rpm -q kernel$KERNEL_TYPE-$KERNEL_RELEASE >/dev/null 2>&1 && KERNEL_ARCH=`rpm -q --qf '%{ARCH}' kernel$KERNEL_TYPE-$KERNEL_RELEASE 2>/dev/null` || KERNEL_ARCH=`uname -m`
+OLD_KERNEL_ARCH_TYPE=`sed -n 's_^/\* Kernel type \(.*\) \*/_\1_p' /boot/kernel.h 2>/dev/null`
+if [ -n "$KERNEL_ARCH" -a "$KERNEL_ARCH$KERNEL_TYPE" != "$OLD_KERNEL_ARCH_TYPE" ]; then
+ TAPE='0'
+ VM='0'
+ case "$KERNEL_TYPE" in
+ -tape) TAPE='1';;
+ *) VM='1';;
+ esac
+ cat > /boot/kernel.h << EOF
+/* This file is automatically generated at boot time. */
#ifndef __BOOT_KERNEL_H_
#define __BOOT_KERNEL_H_
-#define __BOOT_KERNEL_vrdr 0
-#define __BOOT_KERNEL_tape 0
+/* Kernel type $KERNEL_ARCH$KERNEL_TYPE */
+
+#ifndef __MODULE_KERNEL_$KERNEL_ARCH
+#define __MODULE_KERNEL_$KERNEL_ARCH 1
+#endif
-#undef __BOOT_KERNEL_$KVER
-#define __BOOT_KERNEL_$KVER 1
+#ifndef __BOOT_KERNEL_TAPE
+#define __BOOT_KERNEL_TAPE $TAPE
+#endif
+
+#ifndef __BOOT_KERNEL_VM
+#define __BOOT_KERNEL_VM $VM
+#endif
#endif
EOF
+fi