]> git.ipfire.org Git - u-boot.git/blame - board/MAI/AmigaOneG3SE/macros.h
* Code cleanup:
[u-boot.git] / board / MAI / AmigaOneG3SE / macros.h
CommitLineData
c7de829c
WD
1
2#ifndef _MACROS_H
3#define _MACROS_H
4
5 /*
6 ** Load a long integer into a register
7 */
8bde7f77
WD
8 .macro liw reg, value
9 lis \reg, \value@h
10 ori \reg, \reg, \value@l
11 .endm
c7de829c
WD
12
13
8bde7f77 14 /*
c7de829c
WD
15 ** Generate config_addr request
16 ** This macro expects the values in registers:
17 ** r3 - bus
18 ** r4 - devfn
19 ** r5 - offset
20 */
8bde7f77 21 .macro config_addr
c7de829c
WD
22 rlwinm r9, r5, 24, 0, 6
23 rlwinm r8, r4, 16, 0, 31
24 rlwinm r7, r3, 8, 0, 31
25 or r9, r8, r9
26 or r9, r7, r9
27 ori r9, r9, 0x80
28 liw r10, 0xfec00cf8
29 stw r9, 0(r10)
30 eieio
31 sync
32 .endm
33
8bde7f77 34
c7de829c
WD
35 /*
36 ** Generate config_data address
37 */
38 .macro config_data mask
39 andi. r9, r5, \mask
40 addi r9, r9, 0xcfc
41 oris r9, r9, 0xfee0
42 .endm
43
44
45 /*
46 ** Write a byte value to an output port
47 */
8bde7f77
WD
48 .macro outb port, value
49 lis r2, 0xfe00
50 li r0, \value
51 stb r0, \port(r2)
52 .endm
c7de829c
WD
53
54
55 /*
56 ** Write a register byte value to an output port
57 */
8bde7f77
WD
58 .macro outbr port, value
59 lis r2, 0xfe00
60 stb \value, \port(r2)
61 .endm
c7de829c
WD
62
63
8bde7f77 64 /*
c7de829c
WD
65 ** Read a byte value from a port into a specified register
66 */
8bde7f77
WD
67 .macro inb reg, port
68 lis r2, 0xfe00
69 lbz \reg, \port(r2)
70 .endm
c7de829c
WD
71
72
73 /*
74 ** Write a byte to the SuperIO config area
75 */
8bde7f77
WD
76 .macro siowb offset, value
77 li r3, 0
78 li r4, (7<<3)
79 li r5, \offset
80 li r6, \value
81 bl pci_write_cfg_byte
82 .endm
c7de829c
WD
83
84#endif