# # Copyright (c) 2024 IBM, Inc # # This work is licensed under the terms of the GNU GPL, version 2 or later. # See the COPYING file in the top-level directory. #include "../migration-test.h" .section .text .macro print ch li %r3,PPC_H_PUT_TERM_CHAR li %r4,0 li %r5,1 li %r6,\ch sldi %r6,%r6,56 sc 1 .endm .globl _start _start: . = 0x100 /* * Enter 64-bit mode. Not necessary because the test uses 32-bit * addresses, but those constants could easily be changed and break * in 32-bit mode. */ mfmsr %r9 li %r10,-1 rldimi %r9,%r10,63,0 mtmsrd %r9 /* * Set up test memory region. Non-volatiles are used because the * hcall can clobber regs. * r20 - start address * r21 - number of pages */ lis %r20,PPC_TEST_MEM_START@h ori %r20,%r20,PPC_TEST_MEM_START@l lis %r9,PPC_TEST_MEM_END@h ori %r9,%r9,PPC_TEST_MEM_END@l subf %r21,%r20,%r9 li %r10,TEST_MEM_PAGE_SIZE divd %r21,%r21,%r10 print 'A' li %r3,0 mr %r9,%r20 mtctr %r21 1: stb %r3,0(%r9) addi %r9,%r9,TEST_MEM_PAGE_SIZE bdnz 1b loop: mr %r9,%r20 mtctr %r21 1: lbz %r3,0(%r9) addi %r3,%r3,1 stb %r3,0(%r9) addi %r9,%r9,TEST_MEM_PAGE_SIZE bdnz 1b print 'B' b loop