1*212c1933SFabiano Rosas# 2*212c1933SFabiano Rosas# Copyright (c) 2024 IBM, Inc 3*212c1933SFabiano Rosas# 4*212c1933SFabiano Rosas# This work is licensed under the terms of the GNU GPL, version 2 or later. 5*212c1933SFabiano Rosas# See the COPYING file in the top-level directory. 6*212c1933SFabiano Rosas 7*212c1933SFabiano Rosas#include "../migration-test.h" 8*212c1933SFabiano Rosas 9*212c1933SFabiano Rosas.section .text 10*212c1933SFabiano Rosas 11*212c1933SFabiano Rosas.macro print ch 12*212c1933SFabiano Rosas li %r3,PPC_H_PUT_TERM_CHAR 13*212c1933SFabiano Rosas li %r4,0 14*212c1933SFabiano Rosas li %r5,1 15*212c1933SFabiano Rosas li %r6,\ch 16*212c1933SFabiano Rosas sldi %r6,%r6,56 17*212c1933SFabiano Rosas sc 1 18*212c1933SFabiano Rosas.endm 19*212c1933SFabiano Rosas 20*212c1933SFabiano Rosas .globl _start 21*212c1933SFabiano Rosas_start: 22*212c1933SFabiano Rosas. = 0x100 23*212c1933SFabiano Rosas /* 24*212c1933SFabiano Rosas * Enter 64-bit mode. Not necessary because the test uses 32-bit 25*212c1933SFabiano Rosas * addresses, but those constants could easily be changed and break 26*212c1933SFabiano Rosas * in 32-bit mode. 27*212c1933SFabiano Rosas */ 28*212c1933SFabiano Rosas mfmsr %r9 29*212c1933SFabiano Rosas li %r10,-1 30*212c1933SFabiano Rosas rldimi %r9,%r10,63,0 31*212c1933SFabiano Rosas mtmsrd %r9 32*212c1933SFabiano Rosas 33*212c1933SFabiano Rosas /* 34*212c1933SFabiano Rosas * Set up test memory region. Non-volatiles are used because the 35*212c1933SFabiano Rosas * hcall can clobber regs. 36*212c1933SFabiano Rosas * r20 - start address 37*212c1933SFabiano Rosas * r21 - number of pages 38*212c1933SFabiano Rosas */ 39*212c1933SFabiano Rosas lis %r20,PPC_TEST_MEM_START@h 40*212c1933SFabiano Rosas ori %r20,%r20,PPC_TEST_MEM_START@l 41*212c1933SFabiano Rosas lis %r9,PPC_TEST_MEM_END@h 42*212c1933SFabiano Rosas ori %r9,%r9,PPC_TEST_MEM_END@l 43*212c1933SFabiano Rosas subf %r21,%r20,%r9 44*212c1933SFabiano Rosas li %r10,TEST_MEM_PAGE_SIZE 45*212c1933SFabiano Rosas divd %r21,%r21,%r10 46*212c1933SFabiano Rosas 47*212c1933SFabiano Rosas print 'A' 48*212c1933SFabiano Rosas 49*212c1933SFabiano Rosas li %r3,0 50*212c1933SFabiano Rosas mr %r9,%r20 51*212c1933SFabiano Rosas mtctr %r21 52*212c1933SFabiano Rosas1: stb %r3,0(%r9) 53*212c1933SFabiano Rosas addi %r9,%r9,TEST_MEM_PAGE_SIZE 54*212c1933SFabiano Rosas bdnz 1b 55*212c1933SFabiano Rosas 56*212c1933SFabiano Rosasloop: 57*212c1933SFabiano Rosas mr %r9,%r20 58*212c1933SFabiano Rosas mtctr %r21 59*212c1933SFabiano Rosas1: lbz %r3,0(%r9) 60*212c1933SFabiano Rosas addi %r3,%r3,1 61*212c1933SFabiano Rosas stb %r3,0(%r9) 62*212c1933SFabiano Rosas addi %r9,%r9,TEST_MEM_PAGE_SIZE 63*212c1933SFabiano Rosas bdnz 1b 64*212c1933SFabiano Rosas 65*212c1933SFabiano Rosas print 'B' 66*212c1933SFabiano Rosas b loop 67