diff options
author | Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> | 2012-10-16 11:49:51 +0530 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2012-10-17 16:30:58 +1100 |
commit | 0ad10f26c94a86a0c9c3970e53f9a9f6a744055d (patch) | |
tree | 40b0d9d2ba55512071a9e713bd2db55b84a65ef6 /lib/libhvcall | |
parent | 7000cbc4e14aa891adbfdcc07b157e8c9ebb026c (diff) | |
download | SLOF-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.h | 14 |
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); |