summaryrefslogtreecommitdiffstats
path: root/target/linux/image/generic/lzma-loader/src/decompress.c
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-06-07 23:45:42 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2006-06-07 23:45:42 +0000
commit0d2d5b055d824a8eb822f29181aed5435fc3c045 (patch)
tree61eb4a590e1bd3c4e7837b17ffeac18cd5efb07f /target/linux/image/generic/lzma-loader/src/decompress.c
parent9e24eb2b14080e290e436deffd442c87b1d2c37e (diff)
generic lzma loader: add support for memory copying, preserve prom arguments
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@3908 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/image/generic/lzma-loader/src/decompress.c')
-rw-r--r--target/linux/image/generic/lzma-loader/src/decompress.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/target/linux/image/generic/lzma-loader/src/decompress.c b/target/linux/image/generic/lzma-loader/src/decompress.c
index f602276dd..4ed432d1a 100644
--- a/target/linux/image/generic/lzma-loader/src/decompress.c
+++ b/target/linux/image/generic/lzma-loader/src/decompress.c
@@ -106,6 +106,13 @@ void entry(unsigned long icache_size, unsigned long icache_lsize,
{
unsigned int i; /* temp value */
unsigned int osize; /* uncompressed size */
+ volatile unsigned int arg0, arg1, arg2, arg3;
+
+ /* restore argument registers */
+ __asm__ __volatile__ ("ori %0, $12, 0":"=r"(arg0));
+ __asm__ __volatile__ ("ori %0, $13, 0":"=r"(arg1));
+ __asm__ __volatile__ ("ori %0, $14, 0":"=r"(arg2));
+ __asm__ __volatile__ ("ori %0, $15, 0":"=r"(arg3));
ILzmaInCallback callback;
CLzmaDecoderState vs;
@@ -142,6 +149,6 @@ void entry(unsigned long icache_size, unsigned long icache_lsize,
blast_icache(icache_size, icache_lsize);
/* Jump to load address */
- ((void (*)(void)) KERNEL_ENTRY)();
+ ((void (*)(int a0, int a1, int a2, int a3)) KERNEL_ENTRY)(arg0, arg1, arg2, arg3);
}
}