diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/mkkerneldoth.s390 | 33 |
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 |