
#ifndef _MACROS_H
#define _MACROS_H

	/*
	** Load a long integer into a register
	*/
      	.macro liw reg, value
                lis \reg, \value@h
                ori \reg, \reg, \value@l
        .endm


	/* 
	** Generate config_addr request
	** This macro expects the values in registers:
	** r3 - bus
	** r4 - devfn
	** r5 - offset
	*/
	.macro config_addr 	
		rlwinm	r9, r5, 24, 0, 6
		rlwinm	r8, r4, 16, 0, 31
		rlwinm	r7, r3, 8, 0, 31
		or	r9, r8, r9
		or	r9, r7, r9
		ori	r9, r9, 0x80
		liw	r10, 0xfec00cf8
		stw	r9, 0(r10)
		eieio
		sync
	.endm

	
	/*
	** Generate config_data address
	*/
	.macro config_data mask
		andi.	r9, r5, \mask
		addi	r9, r9, 0xcfc
		oris	r9, r9, 0xfee0
	.endm


	/*
	** Write a byte value to an output port
	*/
        .macro outb port, value
                lis     r2, 0xfe00
                li      r0, \value
                stb     r0, \port(r2)
        .endm


	/*
	** Write a register byte value to an output port
	*/
        .macro outbr port, value
                lis     r2, 0xfe00
                stb     \value, \port(r2)
        .endm


	/* 
	** Read a byte value from a port into a specified register
	*/
        .macro inb reg, port
                lis     r2, 0xfe00
                lbz     \reg, \port(r2)
        .endm


	/*
	** Write a byte to the SuperIO config area
	*/
        .macro siowb offset, value
                li      r3, 0
                li      r4, (7<<3)
                li      r5, \offset
                li      r6, \value
                bl      pci_write_cfg_byte
        .endm

#endif
