1*fc8c745dSAlexey Kardashevskiy /* 2*fc8c745dSAlexey Kardashevskiy * Virtual Open Firmware 3*fc8c745dSAlexey Kardashevskiy * 4*fc8c745dSAlexey Kardashevskiy * SPDX-License-Identifier: GPL-2.0-or-later 5*fc8c745dSAlexey Kardashevskiy */ 6*fc8c745dSAlexey Kardashevskiy #include <stdarg.h> 7*fc8c745dSAlexey Kardashevskiy 8*fc8c745dSAlexey Kardashevskiy typedef unsigned char uint8_t; 9*fc8c745dSAlexey Kardashevskiy typedef unsigned short uint16_t; 10*fc8c745dSAlexey Kardashevskiy typedef unsigned long uint32_t; 11*fc8c745dSAlexey Kardashevskiy typedef unsigned long long uint64_t; 12*fc8c745dSAlexey Kardashevskiy #define NULL (0) 13*fc8c745dSAlexey Kardashevskiy typedef unsigned long ihandle; 14*fc8c745dSAlexey Kardashevskiy typedef unsigned long phandle; 15*fc8c745dSAlexey Kardashevskiy typedef int size_t; 16*fc8c745dSAlexey Kardashevskiy 17*fc8c745dSAlexey Kardashevskiy /* globals */ 18*fc8c745dSAlexey Kardashevskiy extern void _prom_entry(void); /* OF CI entry point (i.e. this firmware) */ 19*fc8c745dSAlexey Kardashevskiy 20*fc8c745dSAlexey Kardashevskiy void do_boot(unsigned long addr, unsigned long r3, unsigned long r4); 21*fc8c745dSAlexey Kardashevskiy 22*fc8c745dSAlexey Kardashevskiy /* libc */ 23*fc8c745dSAlexey Kardashevskiy int strlen(const char *s); 24*fc8c745dSAlexey Kardashevskiy int strcmp(const char *s1, const char *s2); 25*fc8c745dSAlexey Kardashevskiy void *memcpy(void *dest, const void *src, size_t n); 26*fc8c745dSAlexey Kardashevskiy int memcmp(const void *ptr1, const void *ptr2, size_t n); 27*fc8c745dSAlexey Kardashevskiy void *memmove(void *dest, const void *src, size_t n); 28*fc8c745dSAlexey Kardashevskiy void *memset(void *dest, int c, size_t size); 29*fc8c745dSAlexey Kardashevskiy 30*fc8c745dSAlexey Kardashevskiy /* CI wrappers */ 31*fc8c745dSAlexey Kardashevskiy void ci_panic(const char *str); 32*fc8c745dSAlexey Kardashevskiy phandle ci_finddevice(const char *path); 33*fc8c745dSAlexey Kardashevskiy uint32_t ci_getprop(phandle ph, const char *propname, void *prop, int len); 34*fc8c745dSAlexey Kardashevskiy 35*fc8c745dSAlexey Kardashevskiy /* booting from -kernel */ 36*fc8c745dSAlexey Kardashevskiy void boot_from_memory(uint64_t initrd, uint64_t initrdsize); 37*fc8c745dSAlexey Kardashevskiy 38*fc8c745dSAlexey Kardashevskiy /* Entry points for CI and RTAS */ 39*fc8c745dSAlexey Kardashevskiy extern uint32_t ci_entry(uint32_t params); 40*fc8c745dSAlexey Kardashevskiy extern unsigned long hv_rtas(unsigned long params); 41*fc8c745dSAlexey Kardashevskiy extern unsigned int hv_rtas_size; 42