aboutsummaryrefslogtreecommitdiff
path: root/pc-bios
diff options
context:
space:
mode:
authorJanosch Frank <frankja@linux.ibm.com>2020-06-24 03:52:22 -0400
committerThomas Huth <thuth@redhat.com>2020-07-02 10:00:42 +0200
commitadd923b72e76080ca5339a27d58ed13566156935 (patch)
tree6b19362e244761474916a0b8b4dd27b3e7f8fcad /pc-bios
parentfe75c657b8ee962da79f5d3518b139e26dc69c24 (diff)
downloadqemu-add923b72e76080ca5339a27d58ed13566156935.zip
qemu-add923b72e76080ca5339a27d58ed13566156935.tar.gz
qemu-add923b72e76080ca5339a27d58ed13566156935.tar.bz2
pc-bios: s390x: Move panic() into header and add infinite loop
panic() was defined for the ccw and net bios, i.e. twice, so it's cleaner to rather put it into the header. Also let's add an infinite loop into the assembly of disabled_wait() so the caller doesn't need to take care of it. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Pierre Morel <pmorel@linux.ibm.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20200624075226.92728-9-frankja@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'pc-bios')
-rw-r--r--pc-bios/s390-ccw/main.c7
-rw-r--r--pc-bios/s390-ccw/netmain.c8
-rw-r--r--pc-bios/s390-ccw/s390-ccw.h9
-rw-r--r--pc-bios/s390-ccw/start.S5
4 files changed, 10 insertions, 19 deletions
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 8b91245..146a507 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -46,13 +46,6 @@ void write_iplb_location(void)
lowcore->ptr_iplb = ptr2u32(&iplb);
}
-void panic(const char *string)
-{
- sclp_print(string);
- disabled_wait();
- while (1) { }
-}
-
unsigned int get_loadparm_index(void)
{
return atoui(loadparm_str);
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index f1ee635..056e93a 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -439,14 +439,6 @@ static int net_try_direct_tftp_load(filename_ip_t *fn_ip)
return rc;
}
-void panic(const char *string)
-{
- sclp_print(string);
- for (;;) {
- disabled_wait();
- }
-}
-
void write_subsystem_identification(void)
{
SubChannelId *schid = (SubChannelId *) 184;
diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h
index c5820e4..36b884c 100644
--- a/pc-bios/s390-ccw/s390-ccw.h
+++ b/pc-bios/s390-ccw/s390-ccw.h
@@ -50,12 +50,11 @@ typedef unsigned long long __u64;
#include "iplb.h"
/* start.s */
-void disabled_wait(void);
+void disabled_wait(void) __attribute__ ((__noreturn__));
void consume_sclp_int(void);
void consume_io_int(void);
/* main.c */
-void panic(const char *string);
void write_subsystem_identification(void);
void write_iplb_location(void);
extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
@@ -91,6 +90,12 @@ bool menu_is_enabled_enum(void);
#define MAX_BOOT_ENTRIES 31
+static inline void panic(const char *string)
+{
+ sclp_print(string);
+ disabled_wait();
+}
+
static inline void fill_hex(char *out, unsigned char val)
{
const char hex[] = "0123456789abcdef";
diff --git a/pc-bios/s390-ccw/start.S b/pc-bios/s390-ccw/start.S
index aa8fceb..ce51930 100644
--- a/pc-bios/s390-ccw/start.S
+++ b/pc-bios/s390-ccw/start.S
@@ -47,8 +47,9 @@ memsetxc:
*/
.globl disabled_wait
disabled_wait:
- larl %r1,disabled_wait_psw
- lpswe 0(%r1)
+ larl %r1,disabled_wait_psw
+ lpswe 0(%r1)
+1: j 1b
/*