Author: arty Date: Wed Apr 11 00:49:58 2007 New Revision: 26313
URL: http://svn.reactos.org/svn/reactos?rev=26313&view=rev Log: Remove boot process LE parts.
Modified: branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s branches/powerpc/reactos/tools/ofw_interface/ofw_interface.cpp branches/powerpc/reactos/tools/ppc.lost+found/link-freeldr
Modified: branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/boot/freeldr/boo... ============================================================================== --- branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s (original) +++ branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s Wed Apr 11 00:49:58 2007 @@ -1,104 +1,50 @@ .section .text - - .globl ofw_functions_addr -ofw_functions_addr: - .long ofw_functions - - .align 4 -call_freeldr: - /* Get the address of the functions list -- - * Note: - * Because of little endian switch we must use an even number of - * instructions here.. Pad with a nop if needed. */ - mfmsr %r10 - ori %r10,%r10,1 - nop - mtmsr %r10 - - /* Note that this is little-endian from here on */ - blr - nop - - .align 4 -call_ofw: - /* R3 has the function offset to call (n * 4) - * Other arg registers are unchanged. - * Note that these 4 instructions are in reverse order due to - * little-endian convention */ - stw %r8,24(%r1) - subi %r1,%r1,0x100 - stw %r8,0(%r1) - mflr %r8 - /* - */ - stw %r3,4(%r1) - stw %r4,8(%r1) - stw %r5,12(%r1) - stw %r6,16(%r1) - /* - */ - stw %r7,20(%r1) - stw %r9,28(%r1) - stw %r10,32(%r1) - stw %r20,36(%r1) - - /* - */ - subi %r20,%r20,1 - mfmsr %r20 - mtmsr %r20 - nop - - sync - isync - - /* BE MODE */ - mflr %r8 - stw %r8,16(%r1) - - lis %r10,0xe00000@ha - addi %r8,%r10,ofw_functions_addr@l - /* - */ - lwz %r9,0(%r8) - add %r8,%r3,%r9 - lwz %r9,0(%r8) - mtctr %r9 - - /* - */ - mr %r3,%r4 - mr %r4,%r5 - mr %r5,%r6 - mr %r6,%r7 - /* - */ - mr %r7,%r8 - mr %r8,%r9 - - /* Call ofw proxy function */ - bctrl - nop - - /* Ok, go back to little endian */ - mfmsr %r10 - ori %r10,%r10,1 - nop - mtmsr %r10 - - sync - isync - - /* LE MODE */ - mtlr %r8 - lwz %r8,0(%r1) - lwz %r4,8(%r1) - lwz %r5,12(%r1) - /* - */ - lwz %r6,16(%r1) - lwz %r7,20(%r1) - lwz %r8,24(%r1) - lwz %r9,28(%r1) - /* - */ - lwz %r10,32(%r1) - lwz %r20,36(%r1) - /* - */ - blr - addi %r1,%r1,0x100 + .globl ofw_functions + .globl ofw_call_addr +call_ofw: + /* R3 has the function offset to call (n * 4) + * Other arg registers are unchanged. */ + subi %r1,%r1,0x100 + stw %r8,24(%r1) + mflr %r8 + stw %r8,0(%r1) + stw %r3,4(%r1) + stw %r4,8(%r1) + stw %r5,12(%r1) + stw %r6,16(%r1) + stw %r7,20(%r1) + stw %r9,28(%r1) + stw %r10,32(%r1) + stw %r20,36(%r1) + + lis %r10,0xe00000@ha + addi %r8,%r10,ofw_functions@l + add %r8,%r3,%r8 + lwz %r9,0(%r8) + mtctr %r9 + + mr %r3,%r4 + mr %r4,%r5 + mr %r5,%r6 + mr %r6,%r7 + mr %r7,%r8 + mr %r8,%r9 + + /* Call ofw proxy function */ + bctrl + + lwz %r8,0(%r1) + mtlr %r8 + lwz %r4,8(%r1) + lwz %r5,12(%r1) + lwz %r6,16(%r1) + lwz %r7,20(%r1) + lwz %r8,24(%r1) + lwz %r9,28(%r1) + lwz %r10,32(%r1) + lwz %r20,36(%r1) + addi %r1,%r1,0x100 + blr
prim_strlen: mr %r5,%r3
Modified: branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/boot/freeldr/boo... ============================================================================== --- branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s (original) +++ branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s Wed Apr 11 00:49:58 2007 @@ -5,7 +5,9 @@ .long 0 .long 0 - .globl _begin + .globl _begin + .globl call_ofw + .globl ofw_functions _begin: sync isync @@ -33,11 +35,10 @@ addi %r3,%r3,0xe17000@l
mtlr %r3 + lis %r3,0xe00000@ha + addi %r3,%r3,call_ofw - _start@l
- lis %r3,call_ofw@ha - addi %r3,%r3,call_ofw - _start - - b call_freeldr + blr
zero_registers: xor %r2,%r2,%r2
Modified: branches/powerpc/reactos/tools/ofw_interface/ofw_interface.cpp URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ofw_interf... ============================================================================== --- branches/powerpc/reactos/tools/ofw_interface/ofw_interface.cpp (original) +++ branches/powerpc/reactos/tools/ofw_interface/ofw_interface.cpp Wed Apr 11 00:49:58 2007 @@ -47,10 +47,6 @@ len = other.len; lit_value = other.lit_value; return *this; - } - - bool need_swap() const { - return c_type.find('*') != std::string::npos; }
std::string c_type; @@ -205,41 +201,20 @@ le_stub << "\t" << argtypes[i].c_type << " arg" << i << " = " << argtypes[i].lit_value << ";\n"; } - if( argtypes[i].need_swap() ) { - le_stub << "\tint len" << i << " = "; - if( argtypes[i].len.size() ) - le_stub << argtypes[i].len << ";\n"; - else { - le_stub << "strlen(arg" << i << ");\n"; - } - le_stub << "\tle_swap(" - << "arg" << i << "," - << "arg" << i << "+len" << i << "," - << "arg" << i << ");\n"; - } }
le_stub << "\t"; if( rettype != "void" ) le_stub << "ret = (" << rettype << ")";
le_stub << "ofproxy(" << - (method_call ? (wrapper.method_ctindex * 4) : (wrapper.ctindex * 4)); - + (method_call ? (wrapper.method_ctindex * 4) : (wrapper.ctindex * 4)); + for( i = 0; i < 6; i++ ) { if( i < args ) le_stub << ",(void *)arg" << i; else le_stub << ",NULL"; }
le_stub << ");\n"; - - for( i = args-1; i >= 0; i-- ) { - if( argtypes[i].need_swap() ) { - le_stub << "\tle_swap(" - << "arg" << i << "," - << "arg" << i << "+len" << i << "," - << "arg" << i << ");\n"; - } - }
if( rettype != "void" ) le_stub << "\treturn ret;\n";
Modified: branches/powerpc/reactos/tools/ppc.lost+found/link-freeldr URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc.lost%2... ============================================================================== --- branches/powerpc/reactos/tools/ppc.lost+found/link-freeldr (original) +++ branches/powerpc/reactos/tools/ppc.lost+found/link-freeldr Wed Apr 11 00:49:58 2007 @@ -2,7 +2,7 @@
export PATH=$PATH:/usr/local/pkg/reactos-powerpc/bin powerpc-unknown-linux-gnu-ld \ - -EL -g -nostartfiles -nostdlib -N -Ttext=0xe17000 \ + -g -nostartfiles -nostdlib -N -Ttext=0xe17000 \ -o freeldr.elf \ obj-ppc/boot/freeldr/freeldr/arch/powerpc/boot.o \ obj-ppc/boot/freeldr/freeldr/cache/blocklist.o \ @@ -63,8 +63,7 @@ obj-ppc/lib/string/string.a \ obj-ppc/lib/rtl/rtl.a \ /usr/local/pkg/reactos-powerpc/lib/libgcc.a -powerpc-unknown-linux-gnu-objcopy -O binary freeldr.elf freeldr.tmp.le -output-ppc/tools/ppc-le2be freeldr.tmp.le freeldr.tmp +powerpc-unknown-linux-gnu-objcopy -O binary freeldr.elf freeldr.tmp (dd if=/dev/zero bs=4k count=16 ; echo 'byebye') >> freeldr.tmp powerpc-unknown-linux-gnu-objcopy -I binary -B powerpc:common -O elf32-powerpc freeldr.tmp ofwldr.payload reactos-powerpc-as -mbig -o ofwboot.o boot/freeldr/bootsect/ofwboot.s boot/freeldr/bootsect/ofw_util.s boot/freeldr/bootsect/ofw.s