]> git.ipfire.org Git - people/ms/u-boot.git/blob - board/MAI/AmigaOneG3SE/macros.h
* Code cleanup:
[people/ms/u-boot.git] / board / MAI / AmigaOneG3SE / macros.h
1
2 #ifndef _MACROS_H
3 #define _MACROS_H
4
5 /*
6 ** Load a long integer into a register
7 */
8 .macro liw reg, value
9 lis \reg, \value@h
10 ori \reg, \reg, \value@l
11 .endm
12
13
14 /*
15 ** Generate config_addr request
16 ** This macro expects the values in registers:
17 ** r3 - bus
18 ** r4 - devfn
19 ** r5 - offset
20 */
21 .macro config_addr
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
34
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 */
48 .macro outb port, value
49 lis r2, 0xfe00
50 li r0, \value
51 stb r0, \port(r2)
52 .endm
53
54
55 /*
56 ** Write a register byte value to an output port
57 */
58 .macro outbr port, value
59 lis r2, 0xfe00
60 stb \value, \port(r2)
61 .endm
62
63
64 /*
65 ** Read a byte value from a port into a specified register
66 */
67 .macro inb reg, port
68 lis r2, 0xfe00
69 lbz \reg, \port(r2)
70 .endm
71
72
73 /*
74 ** Write a byte to the SuperIO config area
75 */
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
83
84 #endif