xref: /qemu/tests/qtest/migration/s390x/a-b-bios.c (revision 8ee904b3a4b5638a0046ee3e1948d89ecb2e2668)
1  /*
2   * S390 guest code used in migration tests
3   *
4   * Copyright 2018 Thomas Huth, Red Hat Inc.
5   *
6   * This code is free software; you can redistribute it and/or modify it
7   * under the terms of the GNU General Public License as published by the
8   * Free Software Foundation; either version 2 of the License, or (at your
9   * option) any later version.
10   */
11  
12  #define LOADPARM_LEN 8  /* Needed for sclp.h */
13  
14  #include <libc.h>
15  #include <s390-ccw.h>
16  #include <sclp.h>
17  
18  char stack[0x8000] __attribute__((aligned(4096)));
19  
20  #define START_ADDRESS  (1024 * 1024)
21  #define END_ADDRESS    (100 * 1024 * 1024)
22  
23  void main(void)
24  {
25      unsigned long addr;
26  
27      sclp_setup();
28      sclp_print("A");
29  
30      /*
31       * Make sure all of the pages have consistent contents before incrementing
32       * the first byte below.
33       */
34      for (addr = START_ADDRESS; addr < END_ADDRESS; addr += 4096) {
35          *(volatile char *)addr = 0;
36      }
37  
38      while (1) {
39          for (addr = START_ADDRESS; addr < END_ADDRESS; addr += 4096) {
40              *(volatile char *)addr += 1;  /* Change pages */
41          }
42          sclp_print("B");
43      }
44  }
45