/*
 * Definitions for talking to the Open Firmware PROM on
 * Power Macintosh computers.
 *
 * Copyright (C) 1996 Paul Mackerras.
 */
#ifdef __KERNEL__
#ifndef _PPC_PROM_H
#define _PPC_PROM_H

/* This is used in arch/ppc/mm/mem_pieces.h */
struct reg_property {
	unsigned int address;
	unsigned int size;
};

/*
 * These macros assist in performing the address calculations that we
 * need to do to access data when the kernel is running at an address
 * that is different from the address that the kernel is linked at.
 * The reloc_offset() function returns the difference between these
 * two addresses and the macros simplify the process of adding or
 * subtracting this offset to/from pointer values.
 */
extern unsigned long reloc_offset(void);
extern unsigned long add_reloc_offset(unsigned long);
extern unsigned long sub_reloc_offset(unsigned long);

#define PTRRELOC(x)	((typeof(x))add_reloc_offset((unsigned long)(x)))
#define PTRUNRELOC(x)	((typeof(x))sub_reloc_offset((unsigned long)(x)))

/*
 * Fallback definitions since we don't support OF in arch/ppc any more.
 */
#define machine_is_compatible(x)		0
#define of_find_compatible_node(f, t, c)	NULL
#define get_property(p, n, l)			NULL

#endif /* _PPC_PROM_H */
#endif /* __KERNEL__ */
