[OpenBIOS] r525 - in trunk/openbios-devel: include modules

svn at openbios.org svn at openbios.org
Sun Aug 2 13:05:17 CEST 2009


Author: blueswirl
Date: 2009-08-02 13:05:16 +0200 (Sun, 02 Aug 2009)
New Revision: 525

Modified:
   trunk/openbios-devel/include/ofmem.h
   trunk/openbios-devel/modules/build.xml
Log:
extract ofmem module implementation (Igor Kovalenko)


Modified: trunk/openbios-devel/include/ofmem.h
===================================================================
--- trunk/openbios-devel/include/ofmem.h	2009-08-02 11:05:00 UTC (rev 524)
+++ trunk/openbios-devel/include/ofmem.h	2009-08-02 11:05:16 UTC (rev 525)
@@ -17,25 +17,88 @@
 #ifndef _H_OFMEM
 #define _H_OFMEM
 
+#include "openbios/stack.h"
+
+typedef struct alloc_desc {
+	struct alloc_desc 	*next;
+	ucell			size;			/* size (including) this struct */
+} alloc_desc_t;
+
+typedef struct mem_range {
+	struct mem_range	*next;
+	ucell			start;
+	ucell			size;
+} range_t;
+
+typedef struct trans {
+	struct trans		*next;
+	ucell			virt;			/* chain is sorted by virt */
+	ucell			size;
+	ucell			phys;
+	ucell			mode;
+} translation_t;
+
+/* ofmem private data */
+typedef struct {
+	ucell			ramsize;
+	char 			*next_malloc;
+	alloc_desc_t	*mfree;		/* list of free malloc blocks */
+
+	range_t			*phys_range;
+	range_t			*virt_range;
+
+	translation_t	*trans;		/* this is really a translation_t */
+} ofmem_t;
+
+/* TODO: temporary migration interface */
+extern ofmem_t* ofmem_arch_get_private(void);
+extern void*    ofmem_arch_get_malloc_base(void);
+extern ucell    ofmem_arch_get_heap_top(void);
+extern ucell    ofmem_arch_get_virt_top(void);
+extern ucell    ofmem_arch_default_translation_mode( ucell phys );
+extern void     ofmem_arch_early_map_pages(ucell phys, ucell virt, ucell size,
+                                           ucell mode);
+extern void     ofmem_arch_unmap_pages(ucell virt, ucell size);
+/* sparc64 uses this method */
+extern int      ofmem_map_page_range( ucell phys, ucell virt, ucell size,
+                                      ucell mode );
+
+/* malloc interface */
+extern void* ofmem_malloc( size_t size );
+extern void  ofmem_free( void *ptr );
+extern void* ofmem_realloc( void *ptr, size_t size );
+
+/* ofmem_common.c */
+
 extern void	ofmem_cleanup( void );
 extern void	ofmem_init( void );
 
-extern ucell 	ofmem_claim( ucell addr, ucell size, ucell align );
-extern ucell 	ofmem_claim_phys( ucell mphys, ucell size, ucell align );
-extern ucell 	ofmem_claim_virt( ucell mvirt, ucell size, ucell align );
+/*
+ * register /memory and /virtual-memory handles
+ * ofmem module will update "available" and "translations" properties
+ * using these handles
+ *
+ * to disable updating /memory properties  pass zero memory handle
+ */
+extern void ofmem_register( phandle_t ph_memory, phandle_t ph_mmu );
 
-extern int 	ofmem_map( ucell phys, ucell virt, ucell size, ucell mode );
+extern ucell ofmem_claim( ucell addr, ucell size, ucell align );
+extern ucell ofmem_claim_phys( ucell mphys, ucell size, ucell align );
+extern ucell ofmem_claim_virt( ucell mvirt, ucell size, ucell align );
 
-extern void  	ofmem_release( ucell virt, ucell size );
-extern ucell 	ofmem_translate( ucell virt, ucell *ret_mode );
+extern int   ofmem_map( ucell phys, ucell virt, ucell size, ucell mode );
+extern int   ofmem_unmap( ucell virt, ucell size );
 
+extern void  ofmem_release_phys( ucell phys, ucell size );
+extern void  ofmem_release_virt( ucell virt, ucell size );
+extern ucell ofmem_translate( ucell virt, ucell *ret_mode );
+
 #ifdef CONFIG_PPC
 #define PAGE_SHIFT   12
 
-ulong get_ram_size( void );
 ulong get_ram_top( void );
 ulong get_ram_bottom( void );
-void ofmem_register( phandle_t ph );
+
 #elif defined(CONFIG_SPARC32)
 #define PAGE_SHIFT   12
 

Modified: trunk/openbios-devel/modules/build.xml
===================================================================
--- trunk/openbios-devel/modules/build.xml	2009-08-02 11:05:00 UTC (rev 524)
+++ trunk/openbios-devel/modules/build.xml	2009-08-02 11:05:16 UTC (rev 525)
@@ -23,6 +23,7 @@
   <object source="sun-parts.c" condition="SUN_PARTS"/>
   <object source="font_8x8.c" condition="FONT_8X8"/>
   <object source="font_8x16.c" condition="FONT_8X16"/>
+  <object source="ofmem_common.c" condition="OFMEM"/>
  </library>
 
  <dictionary name="openbios" target="forth">




More information about the OpenBIOS mailing list