Author: oxygene
Date: 2009-04-30 09:23:15 +0200 (Thu, 30 Apr 2009)
New Revision: 4234

Added:
   trunk/coreboot-v2/src/arch/i386/lib/copy_and_run.c
Log:
And add the new file I forgot to "svn add" in the last commit.


Signed-off-by: Patrick Georgi <[email protected]>
Acked-by: Patrick Georgi <[email protected]>


Added: trunk/coreboot-v2/src/arch/i386/lib/copy_and_run.c
===================================================================
--- trunk/coreboot-v2/src/arch/i386/lib/copy_and_run.c                          
(rev 0)
+++ trunk/coreboot-v2/src/arch/i386/lib/copy_and_run.c  2009-04-30 07:23:15 UTC 
(rev 4234)
@@ -0,0 +1,54 @@
+/* by yhlu 6.2005
+       moved from nrv2v.c and some lines from crt0.S
+   2006/05/02 - stepan: move nrv2b to an extra file.
+*/
+
+#include <console/console.h>
+#include <stdint.h>
+#include <string.h>
+
+#if CONFIG_COMPRESS
+#define ENDIAN   0
+#define BITSIZE 32
+#include "../lib/nrv2b.c"
+#endif
+
+void copy_and_run_core(u8 *src, u8 *dst, unsigned long ilen, unsigned ebp)
+{
+        unsigned long olen;
+
+#if CONFIG_USE_INIT
+       printk_spew("src=%08x\r\n",src);
+       printk_spew("dst=%08x\r\n",dst);
+#else
+        print_spew("src="); print_spew_hex32((uint32_t)src); 
print_spew("\r\n");
+        print_spew("dst="); print_spew_hex32((uint32_t)dst); 
print_spew("\r\n");
+#endif
+
+#if !CONFIG_COMPRESS
+       print_debug("Copying image to RAM.\r\n");
+       memcpy(src, dst, ilen);
+       olen = ilen;
+#else
+       print_debug("Uncompressing image to RAM.\r\n");
+//     dump_mem(src, src+0x100);
+       olen = unrv2b(src, dst, &ilen);
+#endif
+
+//     dump_mem(dst, dst+0x100);
+#if CONFIG_USE_INIT
+       printk_spew("image length = %08x\r\n", olen);
+#else
+       print_spew("image length = "); print_spew_hex32(olen); 
print_spew("\r\n");
+#endif
+       print_debug("Jumping to image.\r\n");
+
+       __asm__ volatile (
+               "movl %0, %%ebp\n\t"
+               "cli\n\t"
+               "leal    _iseg, %%edi\n\t"
+               "jmp     *%%edi\n\t"
+               :: "a"(ebp)
+       );
+
+}


-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to