Commit partial implementation of SUNW,retain for SPARC64 based upon the existing physical allocation routines. I've been unable

to finish the code and test retention after a restart since the OpenBIOS words reset and reset-all don't seem to work at the 
moment. However, it enables OpenSolaris boot to get further in the meantime.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@766 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
Mark Cave-Ayland
2010-05-02 19:26:29 +00:00
committed by Mark Cave-Ayland
parent 0c2f6e929d
commit ca0f9c5a03
4 changed files with 76 additions and 9 deletions

View File

@@ -46,10 +46,17 @@ typedef struct {
range_t *phys_range;
range_t *virt_range;
range_t *retain_phys_range; /* physical memory that should survive a warm reset */
translation_t *trans; /* this is really a translation_t */
} ofmem_t;
/* structure for retained data at the top of the heap */
typedef struct {
ucell magic;
range_t *retain_phys_range;
} retain_t;
/* TODO: temporary migration interface */
extern ofmem_t* ofmem_arch_get_private(void);
extern void* ofmem_arch_get_malloc_base(void);
@@ -86,6 +93,8 @@ 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 ucell ofmem_retain( ucell phys, ucell size, ucell align );
extern int ofmem_map( ucell phys, ucell virt, ucell size, ucell mode );
extern int ofmem_unmap( ucell virt, ucell size );