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