Don't assume that pointer and cell size are identical, part 1

On ppc64, cell size is 32 bits but pointers are 64-bit.
Thus, direct casts result in warnings, treated as errors.

Use [u]intptr_t cast or cell2pointer and pointer2cell macros as necessary.

v2:
* Drop changes related to physical addresses since physical addresses may be
  wider than pointers (e.g., 36 bits on sparc32, as pointed out by Blue).
* Drop changes to cell2pointer() and pointer2cell() for now.

Signed-off-by: Andreas Färber <andreas.faerber@web.de>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@922 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
Andreas Färber
2010-10-25 20:48:45 +00:00
committed by Andreas Färber
parent 28516584d1
commit 380cd335cc
27 changed files with 93 additions and 94 deletions

View File

@@ -150,7 +150,7 @@ get_file_path( int fd )
if( lookup_xt(fdp->ih, "get-path", &fdp->get_path_xt) )
return NULL;
call_package( fdp->get_path_xt, fdp->ih );
return (char*)POP();
return (char*)cell2pointer(POP());
}
const char *
@@ -160,7 +160,7 @@ get_volume_name( int fd )
if( lookup_xt(fdp->ih, "volume-name", &fdp->volume_name_xt) )
return NULL;
call_package( fdp->volume_name_xt, fdp->ih );
return (char*)POP();
return (char*)cell2pointer(POP());
}
const char *
@@ -170,7 +170,7 @@ get_fstype( int fd )
if( lookup_xt(fdp->ih, "get-fstype", &fdp->get_fstype_xt) )
return NULL;
call_package( fdp->get_fstype_xt, fdp->ih );
return (char*)POP();
return (char*)cell2pointer(POP());
}
int
@@ -183,7 +183,7 @@ read_io( int fd, void *buf, size_t cnt )
if (fd != -1) {
fdp = file_descriptors[fd];
PUSH( (ucell)buf );
PUSH( pointer2cell(buf) );
PUSH( cnt );
call_package( fdp->read_xt, fdp->ih );
ret = POP();

View File

@@ -39,7 +39,7 @@ int forth_printf( const char *fmt, ... )
i = vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
PUSH((ucell)buf);
PUSH(pointer2cell(buf));
PUSH(i);
fword("type");