On Sat, Jan 8, 2011 at 12:27 PM, Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk wrote:
This is required because some architectures do not strictly follow the convention of using physical addresses sizes in the /memory node and virtual addresses in the /virtual-memory node.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@siriusit.co.uk
openbios-devel/arch/ppc/qemu/ofmem.c | 24 ++++++++++++++++++++++++ openbios-devel/arch/sparc32/lib.c | 2 -- openbios-devel/arch/sparc32/ofmem_sparc32.c | 24 ++++++++++++++++++++++++ openbios-devel/arch/sparc64/ofmem_sparc64.c | 24 ++++++++++++++++++++++++ openbios-devel/include/libopenbios/ofmem.h | 6 ++++++ openbios-devel/libopenbios/ofmem_common.c | 27 +++++++-------------------- 6 files changed, 85 insertions(+), 22 deletions(-)
diff --git a/openbios-devel/arch/ppc/qemu/ofmem.c b/openbios-devel/arch/ppc/qemu/ofmem.c index 4c6825e..25bbc39 100644 --- a/openbios-devel/arch/ppc/qemu/ofmem.c +++ b/openbios-devel/arch/ppc/qemu/ofmem.c @@ -195,6 +195,30 @@ void ofmem_arch_create_translation_entry(ucell *transentry, translation_t *t) transentry[i++] = t->mode; }
+/* Return the size of a memory available node given the phandle in cells */ +int ofmem_arch_get_available_entry_size(phandle_t ph) +{
- if (ph == s_phandle_memory) {
- return 1 + ofmem_arch_get_physaddr_cellsize();
- } else {
- return 1 + 1;
- }
+}
+/* Generate memory available property entry for PPC */ +void ofmem_arch_create_available_entry(phandle_t ph, ucell *availentry, phys_addr_t start, ucell size) +{
- int i = 0;
- if (ph == s_phandle_memory) {
- i += ofmem_arch_encode_physaddr(availentry, start);
- } else {
- availentry[i++] = start;
- }
- availentry[i++] = size;
Postincrement is useless since the incremented value will not be used.
+}
/************************************************************************/ /* OF private allocations */ /************************************************************************/ diff --git a/openbios-devel/arch/sparc32/lib.c b/openbios-devel/arch/sparc32/lib.c index 72d3a87..90a070b 100644 --- a/openbios-devel/arch/sparc32/lib.c +++ b/openbios-devel/arch/sparc32/lib.c @@ -59,8 +59,6 @@ unsigned int va_shift; static unsigned long *context_table; static unsigned long *l1;
-static phandle_t s_phandle_memory = 0; -static phandle_t s_phandle_mmu = 0; static ucell *mem_reg = 0; static ucell *mem_avail = 0; static ucell *virt_avail = 0; diff --git a/openbios-devel/arch/sparc32/ofmem_sparc32.c b/openbios-devel/arch/sparc32/ofmem_sparc32.c index 6815349..aee736a 100644 --- a/openbios-devel/arch/sparc32/ofmem_sparc32.c +++ b/openbios-devel/arch/sparc32/ofmem_sparc32.c @@ -124,6 +124,30 @@ void ofmem_arch_create_translation_entry(ucell *transentry, translation_t *t) transentry[2] = t->mode; }
+/* Return the size of a memory available node given the phandle in cells */ +int ofmem_arch_get_available_entry_size(phandle_t ph) +{
- if (ph == s_phandle_memory) {
- return 1 + ofmem_arch_get_physaddr_cellsize();
- } else {
- return 1 + 1;
- }
+}
+/* Generate memory available property entry for Sparc32 */ +void ofmem_arch_create_available_entry(phandle_t ph, ucell *availentry, phys_addr_t start, ucell size) +{
- int i = 0;
- if (ph == s_phandle_memory) {
- i += ofmem_arch_encode_physaddr(availentry, start);
- } else {
- availentry[i++] = start;
- }
- availentry[i++] = size;
Also here.