svn commit: r223999 - user/jchandra/mips-xlp-support/sys/mips/mips

Jayachandran C. jchandra at FreeBSD.org
Thu Jul 14 06:27:50 UTC 2011


Author: jchandra
Date: Thu Jul 14 06:27:50 2011
New Revision: 223999
URL: http://svn.freebsd.org/changeset/base/223999

Log:
  Make int to ptr conversion a macro.

Modified:
  user/jchandra/mips-xlp-support/sys/mips/mips/elf_trampoline.c

Modified: user/jchandra/mips-xlp-support/sys/mips/mips/elf_trampoline.c
==============================================================================
--- user/jchandra/mips-xlp-support/sys/mips/mips/elf_trampoline.c	Thu Jul 14 05:49:35 2011	(r223998)
+++ user/jchandra/mips-xlp-support/sys/mips/mips/elf_trampoline.c	Thu Jul 14 06:27:50 2011	(r223999)
@@ -90,6 +90,12 @@ bzero(void *addr, size_t count)
 }
 
 /*
+ * Convert number to pointer, truncate on 64->32 case, sign extend
+ * in 32->64 case
+ */
+#define	mkptr(x)	((void *)(intptr_t)(int)(x))
+
+/*
  * Relocate PT_LOAD segements of kernel ELF image to their respective
  * virtual addresses and return entry point
  */
@@ -118,7 +124,7 @@ load_kernel(void * kstart)
 #else
 	eh = (Elf32_Ehdr *)kstart;
 #endif
-	entry_point = (void*)(intptr_t)(int)eh->e_entry;
+	entry_point = mkptr(eh->e_entry);
 	memcpy(phdr, (void *)(kstart + eh->e_phoff),
 	    eh->e_phnum * sizeof(phdr[0]));
 
@@ -149,12 +155,12 @@ load_kernel(void * kstart)
 		if (phdr[i].p_type != PT_LOAD)
 			continue;
 		
-		memcpy((void *)(intptr_t)(int)(phdr[i].p_vaddr),
+		memcpy(mkptr(phdr[i].p_vaddr),
 		    (void*)(kstart + phdr[i].p_offset), phdr[i].p_filesz);
 
 		/* Clean space from oversized segments, eg: bss. */
 		if (phdr[i].p_filesz < phdr[i].p_memsz)
-			bzero((void *)(intptr_t)(int)(phdr[i].p_vaddr + phdr[i].p_filesz),
+			bzero(mkptr(phdr[i].p_vaddr + phdr[i].p_filesz),
 			    phdr[i].p_memsz - phdr[i].p_filesz);
 
 		if (loadend < phdr[i].p_vaddr + phdr[i].p_memsz)


More information about the svn-src-user mailing list