aboutsummaryrefslogtreecommitdiff
path: root/lib/libhvcall
diff options
context:
space:
mode:
authorNikunj A. Dadhania <nikunj@linux.vnet.ibm.com>2012-10-16 11:49:51 +0530
committerDavid Gibson <david@gibson.dropbear.id.au>2012-10-17 16:30:58 +1100
commit0ad10f26c94a86a0c9c3970e53f9a9f6a744055d (patch)
tree40b0d9d2ba55512071a9e713bd2db55b84a65ef6 /lib/libhvcall
parent7000cbc4e14aa891adbfdcc07b157e8c9ebb026c (diff)
downloadSLOF-0ad10f26c94a86a0c9c3970e53f9a9f6a744055d.zip
SLOF-0ad10f26c94a86a0c9c3970e53f9a9f6a744055d.tar.gz
SLOF-0ad10f26c94a86a0c9c3970e53f9a9f6a744055d.tar.bz2
SLOF: Support PAPR NVRAM RTAS callsqemu-slof-20121018
BenH still need to ACK this though. From: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> * Determines size of the flash using device tree. * Provides nvram access functions for RTAS_NVRAM * Allocates temporary buffer of nvram in SLOF code and use that in C. (sbrk not available) * NVRAM_LENGTH is used at various places, make sure it is well guarded and also use dynamically determined size once an RTAS-NVRAM is found. * Use NVRAM_LENGTH as a variable in case of RTAS_NVRAM, not very elegant though Signed-off-by: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> -- Changelog from v1: * #define cleanups suggested by Thomas/Benh * Fix makefile which missed passing $FLAG for building llfw * renamed vio-nvram.fs as rtas-nvram.fs
Diffstat (limited to 'lib/libhvcall')
-rw-r--r--lib/libhvcall/libhvcall.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/libhvcall/libhvcall.h b/lib/libhvcall/libhvcall.h
index 302e2a3..6e418ba 100644
--- a/lib/libhvcall/libhvcall.h
+++ b/lib/libhvcall/libhvcall.h
@@ -70,6 +70,20 @@ static inline long h_add_logical_lan_buffer(unsigned long unit_address,
return hv_generic(H_ADD_LOGICAL_LAN_BUFFER, unit_address, buffer);
}
+#define HV_RTAS_MAX_ARGRET 5
+
+struct hv_rtas_call {
+ uint32_t token;
+ uint32_t nargs;
+ uint32_t nrets;
+ uint32_t argret[HV_RTAS_MAX_ARGRET];
+};
+
+static inline unsigned long h_rtas(struct hv_rtas_call *rtas_buf)
+{
+ return hv_generic(KVMPPC_H_RTAS, (unsigned long)rtas_buf);
+}
+
extern unsigned long hv_logical_ci_load(unsigned long size, unsigned long addr);
extern unsigned long hv_logical_ci_store(unsigned long size, unsigned long addr,
unsigned long value);