From ead25906f67c682eeed8e22bd0db6fdf7f0562c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sat, 30 Oct 2010 15:44:08 +0000 Subject: [PATCH] Don't assume that pointer and cell size are identical, part 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Do the double-dereference in two cell2pointer steps to avoid garbage in the high 32 address bits on ppc64. Signed-off-by: Andreas Färber git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@930 f158a5a8-5612-0410-a976-696ce0be7e32 --- kernel/internal.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/kernel/internal.c b/kernel/internal.c index 0235737..760c66d 100644 --- a/kernel/internal.c +++ b/kernel/internal.c @@ -329,10 +329,11 @@ static void doplusloop(void) #ifndef FCOMPILER static ucell get_myself(void) { - static ucell **myself = NULL; - if( !myself ) - myself = (ucell**)findword("my-self") + 1; - return (*myself && **myself) ? (ucell)**myself : 0; + static ucell *myselfptr = NULL; + if (myselfptr == NULL) + myselfptr = (ucell*)cell2pointer(findword("my-self")) + 1; + ucell *myself = (ucell*)cell2pointer(*myselfptr); + return (myself != NULL) ? *myself : 0; } static void doivar(void)