aboutsummaryrefslogtreecommitdiff
path: root/tests/migration/s390x/a-b-bios.c
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2018-10-09 11:51:17 +0200
committerDr. David Alan Gilbert <dgilbert@redhat.com>2018-10-11 19:58:21 +0100
commit5571dc824b3a8b9e890caa721a6938970e7596ed (patch)
treea7a95ae4172423c7e54db93ab13a05d5411c8a2c /tests/migration/s390x/a-b-bios.c
parentc02b37814cf6962b3320ab34e1b3a26a2323772f (diff)
tests/migration: Enable the migration test on s390x, too
We can re-use the s390-ccw bios code to implement a small firmware for a s390x guest which prints out the "A" and "B" characters and modifies the memory, as required for the migration test. [quintela: Converted the compile script to Makefile rules] Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Message-Id: <1539078677-25396-1-git-send-email-thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Fixed up Makefile since the aarch patch sneaked in first
Diffstat (limited to 'tests/migration/s390x/a-b-bios.c')
-rw-r--r--tests/migration/s390x/a-b-bios.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/migration/s390x/a-b-bios.c b/tests/migration/s390x/a-b-bios.c
new file mode 100644
index 0000000000..a0327cd153
--- /dev/null
+++ b/tests/migration/s390x/a-b-bios.c
@@ -0,0 +1,36 @@
+/*
+ * S390 guest code used in migration tests
+ *
+ * Copyright 2018 Thomas Huth, Red Hat Inc.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+#define LOADPARM_LEN 8 /* Needed for sclp.h */
+
+#include <libc.h>
+#include <s390-ccw.h>
+#include <sclp.h>
+
+char stack[0x8000] __attribute__((aligned(4096)));
+
+#define START_ADDRESS (1024 * 1024)
+#define END_ADDRESS (100 * 1024 * 1024)
+
+void main(void)
+{
+ unsigned long addr;
+
+ sclp_setup();
+ sclp_print("A");
+
+ while (1) {
+ for (addr = START_ADDRESS; addr < END_ADDRESS; addr += 4096) {
+ *(volatile char *)addr += 1; /* Change pages */
+ }
+ sclp_print("B");
+ }
+}