#ifndef _PEXPERT_PPC_PROTOS_H_
#define _PEXPERT_PPC_PROTOS_H_
#define mtsprg(n, reg) __asm__ volatile("mtsprg " # n ", %0" : : "r" (reg))
#define mfsprg(reg, n) __asm__ volatile("mfsprg %0, " # n : "=r" (reg))
#define mtspr(spr, val) __asm__ volatile("mtspr " # spr ", %0" : : "r" (val))
#define mfspr(reg, spr) __asm__ volatile("mfspr %0, " # spr : "=r" (reg))
#define eieio() \
__asm__ volatile("eieio")
#define sync() \
__asm__ volatile("sync")
#define isync() \
__asm__ volatile("isync")
static __inline__ unsigned int byte_reverse_word(unsigned int word);
static __inline__ unsigned int byte_reverse_word(unsigned int word) {
unsigned int result;
__asm__ volatile("lwbrx %0, 0, %1" : "=r" (result) : "r" (&word));
return result;
}
extern void initialize_serial(void * scc_phys_base, uint32_t serial_baud);
extern void initialize_screen(void *, unsigned int);
extern void vc_progress_initialize( void * desc,
const unsigned char * data,
const unsigned char * clut );
extern void vc_display_icon( void * desc,
const unsigned char * data );
extern void panic_ui_initialize(const unsigned char * clut);
extern int switch_to_serial_console(void);
extern void switch_to_old_console(int old_console);
typedef unsigned spl_t;
typedef int io_req_t;
extern void cninit(void);
extern void dbgTrace(unsigned int item1, unsigned int item2, unsigned int item3);
#if 1
extern __inline__ void dbgTrace(unsigned int item1, unsigned int item2, unsigned int item3) {
__asm__ volatile("mr r3,%0" : : "r" (item1) : "r3");
__asm__ volatile("mr r4,%0" : : "r" (item2) : "r4");
__asm__ volatile("mr r5,%0" : : "r" (item3) : "r5");
__asm__ volatile("lis r0,hi16(CutTrace)" : : : "r0");
__asm__ volatile("ori r0,r0,lo16(CutTrace)" : : : "r0");
__asm__ volatile("sc");
return;
}
#endif
extern void DoPreempt(void);
extern __inline__ void DoPreempt(void) {
__asm__ volatile("lis r0,hi16(DoPreemptCall)" : : : "r0");
__asm__ volatile("ori r0,r0,lo16(DoPreemptCall)" : : : "r0");
__asm__ volatile("sc");
return;
}
extern void CreateFakeIO(void);
extern __inline__ void CreateFakeIO(void) {
__asm__ volatile("lis r0,hi16(CreateFakeIOCall)" : : : "r0");
__asm__ volatile("ori r0,r0,lo16(CreateFakeIOCall)" : : : "r0");
__asm__ volatile("sc");
return;
}
extern void StoreReal(unsigned int val, unsigned int addr);
extern void ReadReal(unsigned int raddr, unsigned int *vaddr);
extern unsigned int LLTraceSet(unsigned int tflags);
extern void GratefulDebInit(void);
extern void GratefulDebDisp(unsigned int coord, unsigned int data);
extern void checkNMI(void);
#endif