mirror of
https://gitlab.com/qemu-project/openbios.git
synced 2024-02-13 08:34:06 +08:00
ofmem: CIF release preparations
Add an ofmem_release() function and stub out the implementation. Hook it up for ppc and sparc64. Cc: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk> Signed-off-by: Andreas Färber <andreas.faerber@web.de> git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@938 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
committed by
Andreas Färber
parent
b0158732da
commit
ce371d6307
@@ -271,8 +271,9 @@ ciface_claim( void )
|
||||
static void
|
||||
ciface_release( void )
|
||||
{
|
||||
POP();
|
||||
POP();
|
||||
ucell size = POP();
|
||||
ucell virt = POP();
|
||||
ofmem_release(virt, size);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -584,8 +584,9 @@ ciface_claim( void )
|
||||
static void
|
||||
ciface_release( void )
|
||||
{
|
||||
POP();
|
||||
POP();
|
||||
ucell size = POP();
|
||||
ucell virt = POP();
|
||||
ofmem_release(virt, size);
|
||||
}
|
||||
|
||||
DECLARE_NODE(memory, INSTALL_OPEN, 0, "/memory");
|
||||
|
||||
@@ -101,6 +101,7 @@ 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 );
|
||||
|
||||
extern void ofmem_release( 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 );
|
||||
|
||||
@@ -770,13 +770,19 @@ ucell ofmem_translate( ucell virt, ucell *mode )
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void remove_range( ucell ea, ucell size, range_t **r )
|
||||
{
|
||||
OFMEM_TRACE("%s: not implemented\n", __func__);
|
||||
}
|
||||
|
||||
/* release memory allocated by ofmem_claim_phys */
|
||||
void ofmem_release_phys( ucell phys, ucell size )
|
||||
{
|
||||
OFMEM_TRACE("ofmem_release_phys addr=" FMT_ucellx " size=" FMT_ucellx "\n",
|
||||
phys, size);
|
||||
|
||||
OFMEM_TRACE("ofmem_release_phys not implemented");
|
||||
ofmem_t *ofmem = ofmem_arch_get_private();
|
||||
remove_range(phys, size, &ofmem->phys_range);
|
||||
}
|
||||
|
||||
/* release memory allocated by ofmem_claim_virt */
|
||||
@@ -785,7 +791,25 @@ void ofmem_release_virt( ucell virt, ucell size )
|
||||
OFMEM_TRACE("ofmem_release_virt addr=" FMT_ucellx " size=" FMT_ucellx "\n",
|
||||
virt, size);
|
||||
|
||||
OFMEM_TRACE("ofmem_release_virt not implemented");
|
||||
ofmem_t *ofmem = ofmem_arch_get_private();
|
||||
remove_range(virt, size, &ofmem->virt_range);
|
||||
}
|
||||
|
||||
/* release memory allocated by ofmem_claim - 6.3.2.4 */
|
||||
void ofmem_release( ucell virt, ucell size )
|
||||
{
|
||||
OFMEM_TRACE("%s addr=" FMT_ucellx " size=" FMT_ucellx "\n",
|
||||
__func__, virt, size);
|
||||
|
||||
ucell mode;
|
||||
ucell phys = ofmem_translate(virt, &mode);
|
||||
if (phys == (ucell)-1) {
|
||||
OFMEM_TRACE("%s: no mapping\n", __func__);
|
||||
return;
|
||||
}
|
||||
ofmem_unmap(virt, size);
|
||||
ofmem_release_virt(virt, size);
|
||||
ofmem_release_phys(phys, size);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
Reference in New Issue
Block a user