Merge with git+ssh://master.kernel.org/pub/scm/libs/klibc/klibc.git
diff --git a/usr/include/arch/arm/klibc/asmmacros.h b/usr/include/arch/arm/klibc/asmmacros.h
new file mode 100644
index 0000000..4ed6149
--- /dev/null
+++ b/usr/include/arch/arm/klibc/asmmacros.h
@@ -0,0 +1,30 @@
+/*
+ * usr/include/arch/arm/klibc/asmmacros.h
+ *
+ * Assembly macros used by ARM system call stubs
+ */
+
+#ifndef _KLIBC_ASMMACROS_H
+#define _KLIBC_ASMMACROS_H
+
+/* An immediate in ARM can be any 8-bit value rotated by an even number of bits */
+
+#define ARM_VALID_IMM(x) \
+ ((((x) & ~0x000000ff) == 0) || \
+ (((x) & ~0x000003fc) == 0) || \
+ (((x) & ~0x00000ff0) == 0) || \
+ (((x) & ~0x00003fc0) == 0) || \
+ (((x) & ~0x0000ff00) == 0) || \
+ (((x) & ~0x0003fc00) == 0) || \
+ (((x) & ~0x000ff000) == 0) || \
+ (((x) & ~0x003fc000) == 0) || \
+ (((x) & ~0x00ff0000) == 0) || \
+ (((x) & ~0x03fc0000) == 0) || \
+ (((x) & ~0x0ff00000) == 0) || \
+ (((x) & ~0x3fc00000) == 0) || \
+ (((x) & ~0xff000000) == 0) || \
+ (((x) & ~0xfc000003) == 0) || \
+ (((x) & ~0xf000000f) == 0) || \
+ (((x) & ~0xc000003f) == 0))
+
+#endif /* _KLIBC_ASMMACROS_H */
diff --git a/usr/kinit/initrd.c b/usr/kinit/initrd.c
index 2bc6c01..1371333 100644
--- a/usr/kinit/initrd.c
+++ b/usr/kinit/initrd.c
@@ -191,9 +191,9 @@
if (err)
fprintf(stderr, "%s: running linuxrc: %s\n", progname,
strerror(-err));
+ return 1; /* initrd is root, or run_linuxrc took care of it */
} else {
DEBUG(("kinit: permament (or pivoting) initrd, not running linuxrc\n"));
+ return 0; /* Mounting initrd as ordinary root */
}
-
- return 1; /* initrd is root, or run_linuxrc took care of it */
}
diff --git a/usr/klibc/version b/usr/klibc/version
index 10e70bd..5574de9 100644
--- a/usr/klibc/version
+++ b/usr/klibc/version
@@ -1 +1 @@
-1.3.27
+1.3.28