summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2019-05-10 19:38:53 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2019-05-10 19:38:53 +0000
commitd1c1aa0d559966a6a50fa145f30e8e8ee824f334 (patch)
tree0b683b6cea6beaee5a09c0e9434e92bcfa2a19cc
parentf6f0a0a397dae85cbccd44b8173da0c35e1f624e (diff)
Add bsd.upgrade support to sparc64 bootloader.
OK kettenis@ deraadt@
-rw-r--r--sys/arch/sparc64/stand/ofwboot/boot.c18
-rw-r--r--sys/arch/sparc64/stand/ofwboot/vers.c2
2 files changed, 18 insertions, 2 deletions
diff --git a/sys/arch/sparc64/stand/ofwboot/boot.c b/sys/arch/sparc64/stand/ofwboot/boot.c
index fdf818a0c75..8958ec0b340 100644
--- a/sys/arch/sparc64/stand/ofwboot/boot.c
+++ b/sys/arch/sparc64/stand/ofwboot/boot.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: boot.c,v 1.30 2018/12/31 11:44:57 claudio Exp $ */
+/* $OpenBSD: boot.c,v 1.31 2019/05/10 19:38:52 claudio Exp $ */
/* $NetBSD: boot.c,v 1.3 2001/05/31 08:55:19 mrg Exp $ */
/*
* Copyright (c) 1997, 1999 Eduardo E. Horvath. All rights reserved.
@@ -261,6 +261,16 @@ loadfile(int fd, char *args)
return (rval);
}
+static int
+upgrade(void)
+{
+ struct stat sb;
+
+ if (stat("/bsd.upgrade", &sb) < 0)
+ return 0;
+ return 1;
+}
+
int
loadrandom(char *path, char *buf, size_t buflen)
{
@@ -414,6 +424,12 @@ main(void)
just_bootline[1] = 0;
bootlp = just_bootline;
}
+ if (bootlp == kernels && upgrade()) {
+ just_bootline[0] = "/bsd.upgrade";
+ just_bootline[1] = 0;
+ bootlp = just_bootline;
+ printf("upgrade detected: switching to %s\n", *bootlp);
+ }
for (;;) {
if (bootlp) {
cp = *bootlp++;
diff --git a/sys/arch/sparc64/stand/ofwboot/vers.c b/sys/arch/sparc64/stand/ofwboot/vers.c
index 46d497a5426..5f171c13db2 100644
--- a/sys/arch/sparc64/stand/ofwboot/vers.c
+++ b/sys/arch/sparc64/stand/ofwboot/vers.c
@@ -1 +1 @@
-const char version[] = "1.12";
+const char version[] = "1.13";