[ros-diffs] [arty] 22661: Fix some sillyness. Remove some cruft.

arty at svn.reactos.org arty at svn.reactos.org
Tue Jun 27 12:02:43 CEST 2006


Author: arty
Date: Tue Jun 27 14:02:42 2006
New Revision: 22661

URL: http://svn.reactos.org/svn/reactos?rev=22661&view=rev
Log:
Fix some sillyness.  Remove some cruft.

Modified:
    branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s
    branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s

Modified: branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s?rev=22661&r1=22660&r2=22661&view=diff
==============================================================================
--- branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s (original)
+++ branches/powerpc/reactos/boot/freeldr/bootsect/ofw_util.s Tue Jun 27 14:02:42 2006
@@ -1,4 +1,76 @@
 	.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
+	mtmsr	%r10
+
+	nop
+	
+	/* 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 */
+	andi.	%r0,%r0,65534
+	mfmsr	%r0
+	mtmsr	%r0
+	/* Now normal ordering resumes */
+	subi	%r1,%r1,0x100
+
+	stw	%r8,4(%r1)
+	stw	%r9,8(%r1)
+	stw	%r10,12(%r1)
+	mflr	%r8
+	stw	%r8,16(%r1)
+
+	lis	%r10,0xe00000 at ha
+	add	%r9,%r3,%r10
+	lwz	%r3,ofw_functions_addr - _start at l(%r9)
+	lwz	%r3,0(%r3)
+	mtctr	%r3
+	
+	mr	%r3,%r4
+	mr	%r4,%r5
+	mr	%r5,%r6
+	mr	%r6,%r7
+	mr	%r7,%r8
+
+	/* Goto the swapped function */
+	bctrl
+
+	lwz	%r8,16(%r1)
+	mtlr	%r8
+
+	lwz	%r8,4(%r1)
+	lwz	%r9,8(%r1)
+	lwz	%r10,12(%r1)
+
+	addi	%r1,%r1,0x100
+	/* Ok, go back to little endian */
+	mfmsr	%r0
+	ori	%r0,%r0,1
+	mtmsr	%r0
+
+	/* Note that this is little-endian from here on */
+	blr
+	nop
+
 prim_strlen:
 	mr	%r5,%r3
 prim_strlen_loop:	
@@ -14,7 +86,7 @@
 	
 copy_bits:
 	cmp	0,0,%r3,%r4
-	beqlr
+	bgelr
 
 	lwz	%r6,0(%r3)
 	stw	%r6,0(%r5)
@@ -366,3 +438,29 @@
 		
 	blr
 	
+ofw_chosen_name:
+	.ascii	"/chosen\0"
+
+ofw_stdout_name:
+	.ascii	"stdout\0"
+
+ofw_memory_name:
+	.ascii	"/memory at 0\0"
+
+ofw_reg_name:
+	.ascii	"reg\0"
+	
+freeldr_reg_init:
+	.ascii	"r\0"
+
+freeldr_reg_lr:	
+	.ascii	"lr \0"
+
+freeldr_reg_cr:	
+	.ascii	"cr \0"
+	
+freeldr_reg_ctr:	
+	.ascii	"ctr\0"
+
+freeldr_reg_msr:	
+	.ascii	"msr\0"

Modified: branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s?rev=22661&r1=22660&r2=22661&view=diff
==============================================================================
--- branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s (original)
+++ branches/powerpc/reactos/boot/freeldr/bootsect/ofwboot.s Tue Jun 27 14:02:42 2006
@@ -1,5 +1,4 @@
 	.section .text
-        .globl  setup_bats
 
 _start:	
 	.long	0xe00000 + 12
@@ -20,14 +19,27 @@
 	lis	%r10,0xe00000 at ha
 	stw	%r5,ofw_call_addr - _start at l(%r10)
 
-	bl	setup_bats
-
 	lis	%r3,0xe00000 at ha
 	addi	%r3,%r3,freeldr_banner - _start
 
 	bl	ofw_print_string
 
 	bl	ofw_print_eol
+
+	/* Claim enough bytes to place freeldr at 0x8000 */
+	lis	%r3,0x8000 at ha
+	addi	%r3,%r3,0x8000 at l
+
+	lis	%r4,_binary_freeldr_tmp_end at ha
+	addi	%r4,%r4,_binary_freeldr_tmp_end at l
+	lis	%r5,_binary_freeldr_tmp_start at ha
+	addi	%r5,%r5,_binary_freeldr_tmp_start at l
+	sub	%r4,%r4,%r5
+		
+	xor	%r5,%r5,%r5
+	li	%r5,0x1000
+
+	bl	ofw_claim
 
 	lis	%r4,_binary_freeldr_tmp_end at ha
 	addi	%r4,%r4,_binary_freeldr_tmp_end at l
@@ -37,25 +49,23 @@
 	lis	%r5,0x8000 at ha
 	addi	%r5,%r5,0x8000 at l
 
-	bl	ofw_print_regs 
+	bl	ofw_dumpregs 
 
 	bl	copy_bits
 
 	bl	zero_registers
 
-/*	bl	setup_exc */
-
 	/* Zero CTR */
 	mtcr	%r31
-	
+
 	lis	%r3,0x8000 at ha
 	addi	%r3,%r3,0x8000 at l
 
 	mtlr	%r3
-	
-	lis	%r3,call_ofw at ha
-	addi	%r3,%r3,call_ofw - _start
-	
+
+	lis	%r3,call_freeldr at ha
+	addi	%r3,%r3,call_freeldr - _start
+
 	blr
 
 /*
@@ -79,71 +89,6 @@
         isync
         blr
 	
-	.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
-	mtmsr	%r10
-
-	nop
-	
-	/* 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 */
-	andi.	%r0,%r0,65534
-	mfmsr	%r0
-	mtmsr	%r0
-	/* Now normal ordering resumes */
-	subi	%r1,%r1,0x100
-
-	stw	%r8,4(%r1)
-	stw	%r9,8(%r1)
-	stw	%r10,12(%r1)
-	mflr	%r8
-	stw	%r8,16(%r1)
-
-	lis	%r10,0xe00000 at ha
-	add	%r9,%r3,%r10
-	lwz	%r3,ofw_functions - _start at l(%r9)
-	mtctr	%r3
-	
-	mr	%r3,%r4
-	mr	%r4,%r5
-	mr	%r5,%r6
-	mr	%r6,%r7
-	mr	%r7,%r8
-
-	/* Goto the swapped function */
-	bctrl
-
-	lwz	%r8,16(%r1)
-	mtlr	%r8
-
-	lwz	%r8,4(%r1)
-	lwz	%r9,8(%r1)
-	lwz	%r10,12(%r1)
-
-	addi	%r1,%r1,0x100
-	/* Ok, go back to little endian */
-	mfmsr	%r0
-	ori	%r0,%r0,1
-	mtmsr	%r0
-
-	/* Note that this is little-endian from here on */
-	blr
-	nop
-
 zero_registers:
 	xor	%r2,%r2,%r2
 	mr	%r0,%r2
@@ -191,961 +136,6 @@
 
 	blr
 	
-prim_strlen:
-	mr	%r5,%r3
-prim_strlen_loop:	
-	lbz	%r4,0(%r3)
-	cmpi	0,0,%r4,0
-	beq	prim_strlen_done
-	addi	%r3,%r3,1
-	b	prim_strlen_loop
-	
-prim_strlen_done:
-	sub	%r3,%r3,%r5
-	blr
-	
-copy_bits:
-	cmp	0,0,%r3,%r4
-	beqlr
-	lwz	%r6,0(%r3)
-	stw	%r6,0(%r5)
-	addi	%r3,%r3,4
-	addi	%r5,%r5,4
-	b	copy_bits
-
-ofw_print_string_hook:
-	bl	ofw_print_number
-	bl	ofw_exit
-	
-ofw_print_string:
-	/* Reserve some stack space */
-	subi	%r1,%r1,32
-
-	/* Save args */
-	stw	%r3,0(%r1)
-	
-	/* Save the lr, a scratch register */
-	stw	%r8,8(%r1)
-	mflr	%r8
-	stw	%r8,12(%r1)
-
-	/* Load the package name */
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,ofw_chosen_name - _start
-
-	/* Fire */
-	bl	ofw_finddevice
-
-	/* Load up for getprop */
-	stw	%r3,16(%r1)
-
-	lis	%r4,0xe00000 at ha
-	addi	%r4,%r4,ofw_stdout_name - _start
-
-	addi	%r5,%r1,20
-
-	li	%r6,4
-
-	bl	ofw_getprop
-
-	/* Measure the string and remember the length */
-	lwz	%r3,0(%r1)
-	bl	prim_strlen
-	mr	%r5,%r3
-	
-	lwz	%r3,20(%r1)
-	lwz	%r4,0(%r1)
-
-	/* Write the string */
-	bl	ofw_write
-
-	/* Return */
-	lwz	%r8,12(%r1)
-	mtlr	%r8
-	lwz	%r8,8(%r1)
-	
-	addi	%r1,%r1,32
-	blr
-
-	/* Print 8 hex digits representing a number in r3 */
-ofw_print_number:
-	subi	%r1,%r1,32
-	stw	%r8,0(%r1)
-	mflr	%r8
-	stw	%r8,4(%r1)
-	stw	%r9,8(%r1)
-
-	xor	%r9,%r9,%r9
-	stw	%r9,12(%r1)
-
-	/* Set up and, devide, shift */
-	mr	%r8,%r3
-	lis	%r6,0xf0000000 at ha
-	lis	%r7,0x10000000 at ha
-	li	%r9,8
-
-ofw_number_loop:
-	nop
-	cmpi	0,0,%r9,0
-	beq	ofw_number_return
-	subi	%r9,%r9,1
-
-	/* Body: isolate digit, divide, print */
-	and	%r5,%r6,%r8
-	divwu	%r4,%r5,%r7
-	srwi	%r6,%r6,4
-	srwi	%r7,%r7,4
-
-	nop
-	
-	cmpi	0,0,%r4,10
-	bge	ofw_number_letter
-	addi	%r4,%r4,'0'
-	b	ofw_number_digit_out
-	
-ofw_number_letter:
-	addi	%r4,%r4,'A' - 10
-
-ofw_number_digit_out:	
-	stb	%r4,12(%r1)
-	addi	%r3,%r1,12
-
-	stw	%r6,16(%r1)
-	stw	%r7,20(%r1)
-	stw	%r8,24(%r1)
-	stw	%r9,28(%r1)
-	
-	bl	ofw_print_string
-
-	lwz	%r6,16(%r1)
-	lwz	%r7,20(%r1)
-	lwz	%r8,24(%r1)
-	lwz	%r9,28(%r1)
-	
-	b	ofw_number_loop
-
-ofw_number_return:	
-	/* Return */
-	lwz	%r9,8(%r1)
-	lwz	%r8,4(%r1)
-	mtlr	%r8
-	lwz	%r8,0(%r1)
-	addi	%r1,%r1,32
-	blr
-
-ofw_print_eol:
-	subi	%r1,%r1,16
-	stw	%r8,0(%r1)
-	mflr	%r8
-	stw	%r8,4(%r1)
-	li	%r4,0x0d0a
-	sth	%r4,8(%r1)
-	xor	%r4,%r4,%r4
-	sth	%r4,10(%r1)
-	addi	%r3,%r1,8
-	bl	ofw_print_string
-	lwz	%r8,4(%r1)
-	mtlr	%r8
-	lwz	%r8,0(%r1)
-	addi	%r1,%r1,16
-	blr
-
-ofw_print_nothing:
-	subi	%r1,%r1,16
-	stw	%r8,0(%r1)
-	mflr	%r8
-	stw	%r8,4(%r1)
-	li	%r4,0
-	sth	%r4,8(%r1)
-	xor	%r4,%r4,%r4
-	sth	%r4,10(%r1)
-	addi	%r3,%r1,8
-	bl	ofw_print_string
-	lwz	%r8,4(%r1)
-	mtlr	%r8
-	lwz	%r8,0(%r1)
-	addi	%r1,%r1,16
-	blr
-
-ofw_print_space:
-	subi	%r1,%r1,16
-	stw	%r8,0(%r1)
-	mflr	%r8
-	stw	%r8,4(%r1)
-	li	%r4,0x2000
-	sth	%r4,8(%r1)
-	xor	%r4,%r4,%r4
-	sth	%r4,10(%r1)
-	addi	%r3,%r1,8
-	bl	ofw_print_string
-	lwz	%r8,4(%r1)
-	mtlr	%r8
-	lwz	%r8,0(%r1)
-	addi	%r1,%r1,16
-	blr
-
-ofw_print_regs:	
-	/* Construct ofw exit call */
-	subi	%r1,%r1,0xa0
-
-	stw	%r0,0(%r1)
-	stw	%r1,4(%r1)
-	stw	%r2,8(%r1)
-	stw	%r3,12(%r1)
-
-	stw	%r4,16(%r1)
-	stw	%r5,20(%r1)
-	stw	%r6,24(%r1)
-	stw	%r7,28(%r1)
-	
-	stw	%r8,32(%r1)
-	stw	%r9,36(%r1)
-	stw	%r10,40(%r1)
-	stw	%r11,44(%r1)
-	
-	stw	%r12,48(%r1)
-	stw	%r13,52(%r1)
-	stw	%r14,56(%r1)
-	stw	%r15,60(%r1)
-	
-	stw	%r16,64(%r1)
-	stw	%r17,68(%r1)
-	stw	%r18,72(%r1)
-	stw	%r19,76(%r1)
-	
-	stw	%r20,80(%r1)
-	stw	%r21,84(%r1)
-	stw	%r22,88(%r1)
-	stw	%r23,92(%r1)
-	
-	stw	%r24,96(%r1)
-	stw	%r25,100(%r1)
-	stw	%r26,104(%r1)
-	stw	%r27,108(%r1)
-	
-	stw	%r28,112(%r1)
-	stw	%r29,116(%r1)
-	stw	%r30,120(%r1)
-	stw	%r31,124(%r1)
-
-	mflr	%r0
-	stw	%r0,128(%r1)
-	mfcr	%r0
-	stw	%r0,132(%r1)
-	mfctr	%r0
-	stw	%r0,136(%r1)
-	mfmsr	%r0
-	stw	%r0,140(%r1)
-
-	/* Count at zero */
-	xor	%r0,%r0,%r0
-	stw	%r0,144(%r1)
-	mr	%r3,%r1
-	stw	%r3,148(%r1)
-	
-	/* Body, print the regname, then the register */
-ofw_register_loop:
-	lwz	%r3,144(%r1)
-	cmpi	0,0,%r3,32
-	beq	ofw_register_special
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_init - _start
-	bl	ofw_print_string
-	lwz	%r3,144(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_space
-	lwz	%r3,144(%r1)
-	mulli	%r3,%r3,4
-	add	%r3,%r1,%r3
-	lwz	%r3,0(%r3)
-	stw	%r3,152(%r1)
-	bl	ofw_print_number
-	lwz	%r3,144(%r1)
-	addi	%r3,%r3,1
-	stw	%r3,144(%r1)
-
-	bl	ofw_print_space
-	
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_init - _start
-	bl	ofw_print_string
-	lwz	%r3,144(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_space
-	lwz	%r3,144(%r1)
-	mulli	%r3,%r3,4
-	add	%r3,%r1,%r3
-	lwz	%r3,0(%r3)
-	stw	%r3,152(%r1)
-	bl	ofw_print_number
-	lwz	%r3,144(%r1)
-	addi	%r3,%r3,1
-	stw	%r3,144(%r1)
-
-	b	done_dump
-
-dump_optional:	
-	bl	ofw_print_space
-	bl	ofw_print_space
-	lwz	%r3,152(%r1)
-	lwz	%r3,0(%r3)
-	bl	ofw_print_number
-	bl	ofw_print_space	
-	lwz	%r3,152(%r1)
-	lwz	%r3,4(%r3)
-	bl	ofw_print_number
-	bl	ofw_print_space	
-	lwz	%r3,152(%r1)
-	lwz	%r3,8(%r3)
-	bl	ofw_print_number
-	bl	ofw_print_space	
-	lwz	%r3,152(%r1)
-	lwz	%r3,12(%r3)
-	bl	ofw_print_number
-	bl	ofw_print_space
-done_dump:	
-	bl	ofw_print_eol
-	b	ofw_register_loop
-
-ofw_register_special:
-	/* LR */
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_lr - _start
-	bl	ofw_print_string
-	bl	ofw_print_space
-	lwz	%r3,128(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_eol
-	
-	/* CR */
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_cr - _start
-	bl	ofw_print_string
-	bl	ofw_print_space
-	lwz	%r3,132(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_eol
-	
-	/* CTR */
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_ctr - _start
-	bl	ofw_print_string
-	bl	ofw_print_space
-	lwz	%r3,136(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_eol
-	
-	/* MSR */
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_reg_msr - _start
-	bl	ofw_print_string
-	bl	ofw_print_space
-	lwz	%r3,140(%r1)
-	bl	ofw_print_number
-	bl	ofw_print_eol
-
-	/* Return */
-	lwz	%r0,128(%r1)
-	mtlr	%r0
-	
-	lwz	%r0,0(%r1)
-	lwz	%r2,8(%r1)
-	lwz	%r3,12(%r1)
-
-	lwz	%r4,16(%r1)
-	lwz	%r5,20(%r1)
-	lwz	%r6,24(%r1)
-	lwz	%r7,28(%r1)
-
-	addi	%r1,%r1,0xa0
-		
-	blr
-	
-ofw_finddevice_hook:
-	subi	%r1,%r1,32
-	stw	%r3,0(%r1)
-	mflr	%r3
-	stw	%r3,4(%r1)
-	lwz	%r3,0(%r1)
-	bl	ofw_finddevice
-	stw	%r3,0(%r1)
-	lwz	%r3,4(%r1)
-	mtlr	%r3
-	lwz	%r3,0(%r1)
-	addi	%r1,%r1,32	
-	blr
-	
-ofw_finddevice:
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,32
-
-	/* Store r8, r9, lr */
-	stw	%r8,20(%r1)
-	stw	%r9,24(%r1)
-	mflr	%r8
-	stw	%r8,28(%r1)
-	
-	/* Get finddevice name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_finddevice_name - _start
-	stw	%r9,0(%r1)
-
-	/* 1 Argument and 1 return */
-	li	%r9,1
-	stw	%r9,4(%r1)
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-	
-	/* Fire */
-	blrl
-	
-	lwz	%r3,16(%r1)
-	
-	/* Restore registers */
-	lwz	%r8,28(%r1)
-	mtlr	%r8
-	lwz	%r9,24(%r1)
-	lwz	%r8,20(%r1)
-	
-	addi	%r1,%r1,32
-	
-	/* Return */
-	blr
-
-ofw_open:
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,32
-
-	/* Store r8, r9, lr */
-	stw	%r8,20(%r1)
-	stw	%r9,24(%r1)
-	mflr	%r8
-	stw	%r8,28(%r1)
-	
-	/* Get open name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_open_name - _start
-	stw	%r9,0(%r1)
-
-	/* 1 Argument and 1 return */
-	li	%r9,1
-	stw	%r9,4(%r1)
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-	
-	/* Fire */
-	blrl
-	
-	lwz	%r3,16(%r1)
-	
-	/* Restore registers */
-	lwz	%r8,28(%r1)
-	mtlr	%r8
-	lwz	%r9,24(%r1)
-	lwz	%r8,20(%r1)
-	
-	addi	%r1,%r1,32
-	
-	/* Return */
-	blr
-
-ofw_getprop_hook:
-	/* Reserve stack space:
-	 * 32 bytes for the ofw call
-	 * 12 bytes for r8, r9, lr
-	 */		
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,48
-
-	/* Store r8, r9, lr */
-	stw	%r8,32(%r1)
-	stw	%r9,36(%r1)
-	mflr	%r8
-	stw	%r8,40(%r1)
-	
-	/* Get getprop name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_getprop_name - _start
-	stw	%r9,0(%r1)
-
-	/* 4 Argument and 1 return */
-	li	%r9,4
-	stw	%r9,4(%r1)
-	li	%r9,1
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1) /* Package */
-	stw	%r4,16(%r1) /* Property */
-	stw	%r5,20(%r1) /* Return buffer */
-	stw	%r6,24(%r1) /* Buffer size */
-	
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-
-	/* Fire */
-	blrl
-
-	/* Workaround to a wierd crash ... not sure what causes it.
-	 * XXX investigate me */
-	bl	ofw_print_nothing
-	
-	/* Return */
-	lwz	%r3,28(%r1)
-
-	/* Restore registers */
-	lwz	%r8,40(%r1)
-	mtlr	%r8
-	lwz	%r9,36(%r1)
-	lwz	%r8,32(%r1)
-	
-	addi	%r1,%r1,48
-		
-	/* Return */
-	blr
-
-ofw_getprop:
-	/* Reserve stack space:
-	 * 32 bytes for the ofw call
-	 * 12 bytes for r8, r9, lr
-	 */		
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,48
-
-	/* Store r8, r9, lr */
-	stw	%r8,32(%r1)
-	stw	%r9,36(%r1)
-	mflr	%r8
-	stw	%r8,40(%r1)
-	
-	/* Get getprop name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_getprop_name - _start
-	stw	%r9,0(%r1)
-
-	/* 4 Argument and 1 return */
-	li	%r9,4
-	stw	%r9,4(%r1)
-	li	%r9,1
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1) /* Package */
-	stw	%r4,16(%r1) /* Property */
-	stw	%r5,20(%r1) /* Return buffer */
-	stw	%r6,24(%r1) /* Buffer size */
-	
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-
-	/* Fire */
-	blrl
-	
-	/* Return */
-	lwz	%r3,28(%r1)
-
-	/* Restore registers */
-	lwz	%r8,40(%r1)
-
-	mtlr	%r8
-	lwz	%r9,36(%r1)
-	lwz	%r8,32(%r1)
-	
-	addi	%r1,%r1,48
-		
-	/* Return */
-	blr
-		
-ofw_write:
-	/* Reserve stack space:
-	 * 28 bytes for the ofw call
-	 * 12 bytes for r8, r9, lr
-	 */		
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,48
-
-	nop
-	
-	/* Store r8, r9, lr */
-	stw	%r8,28(%r1)
-	stw	%r9,32(%r1)
-	mflr	%r8
-	stw	%r8,36(%r1)
-	
-	/* Get write name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_write_name - _start
-	stw	%r9,0(%r1)
-
-	/* 3 Arguments and 1 return */
-	li	%r9,3
-	stw	%r9,4(%r1)
-	li	%r9,1
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-	stw	%r4,16(%r1)
-	stw	%r5,20(%r1)
-	
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-
-	/* Fire */
-	blrl
-
-	/* Return */
-	lwz	%r3,24(%r1)
-
-	/* Restore registers */
-	lwz	%r8,36(%r1)
-	mtlr	%r8
-	lwz	%r9,32(%r1)
-	lwz	%r8,28(%r1)
-	
-	addi	%r1,%r1,48
-	
-	/* Return */
-	blr
-
-ofw_read:
-	/* Reserve stack space:
-	 * 28 bytes for the ofw call
-	 * 12 bytes for r8, r9, lr
-	 */		
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,48
-
-	nop
-	
-	/* Store r8, r9, lr */
-	stw	%r8,28(%r1)
-	stw	%r9,32(%r1)
-	mflr	%r8
-	stw	%r8,36(%r1)
-	
-	/* Get read name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_read_name - _start
-	stw	%r9,0(%r1)
-
-	/* 3 Arguments and 1 return */
-	li	%r9,3
-	stw	%r9,4(%r1)
-	li	%r9,1
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-	stw	%r4,16(%r1)
-	stw	%r5,20(%r1)
-	
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-
-	/* Fire */
-	blrl
-
-	/* Return */
-	lwz	%r3,24(%r1)
-
-	/* Restore registers */
-	lwz	%r8,36(%r1)
-	mtlr	%r8
-	lwz	%r9,32(%r1)
-	lwz	%r8,28(%r1)
-	
-	addi	%r1,%r1,48
-	
-	/* Return */
-	blr
-		
-ofw_exit:
-	lis	%r3,0xe00000 at ha
-	addi	%r3,%r3,freeldr_halt - _start
-
-	bl	ofw_print_string
-/*	
-ofw_exit_loop:	
-	b	ofw_exit_loop
-*/
-	/* Load the exit name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_exit_name - _start
-	stw	%r9,0(%r1)
-
-	/* Zero args, zero returns */
-	xor	%r9,%r9,%r9
-	stw	%r9,4(%r1)
-	stw	%r9,8(%r1)
-	
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	mr	%r3,%r1
-
-	/* Fire */
-	blrl
-	/* No return from exit */
-
-ofw_child:
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,32
-
-	/* Store r8, r9, lr */
-	stw	%r8,20(%r1)
-	stw	%r9,24(%r1)
-	mflr	%r8
-	stw	%r8,28(%r1)
-	
-	/* Get child name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_child_name - _start
-	stw	%r9,0(%r1)
-
-	/* 1 Argument and 1 return */
-	li	%r9,1
-	stw	%r9,4(%r1)
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-	
-	/* Fire */
-	blrl
-	
-	lwz	%r3,16(%r1)
-	
-	/* Restore registers */
-	lwz	%r8,28(%r1)
-	mtlr	%r8
-	lwz	%r9,24(%r1)
-	lwz	%r8,20(%r1)
-	
-	addi	%r1,%r1,32
-	
-	/* Return */
-	blr
-	
-ofw_peer:
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,32
-
-	/* Store r8, r9, lr */
-	stw	%r8,20(%r1)
-	stw	%r9,24(%r1)
-	mflr	%r8
-	stw	%r8,28(%r1)
-	
-	/* Get peer name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_peer_name - _start
-	stw	%r9,0(%r1)
-
-	/* 1 Argument and 1 return */
-	li	%r9,1
-	stw	%r9,4(%r1)
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-	
-	/* Fire */
-	blrl
-	
-	lwz	%r3,16(%r1)
-	
-	/* Restore registers */
-	lwz	%r8,28(%r1)
-	mtlr	%r8
-	lwz	%r9,24(%r1)
-	lwz	%r8,20(%r1)
-	
-	addi	%r1,%r1,32
-	
-	/* Return */
-	blr
-				
-ofw_seek:
-	/* Reserve stack space ...
-	 * 20 bytes for the ofw call,
-	 * r8, r9, and lr */
-	subi	%r1,%r1,32
-
-	/* Store r8, r9, lr */
-	stw	%r8,20(%r1)
-	stw	%r9,24(%r1)
-	mflr	%r8
-	stw	%r8,28(%r1)
-	
-	/* Get peer name */
-	lis	%r8,0xe00000 at ha
-	addi	%r9,%r8,ofw_seek_name - _start
-	stw	%r9,0(%r1)
-
-	/* 3 Arguments and 1 return */
-	li	%r9,3
-	stw	%r9,4(%r1)
-	li	%r9,1
-	stw	%r9,8(%r1)
-
-	stw	%r3,12(%r1)
-	stw	%r4,16(%r1)
-	stw	%r5,20(%r1)
-
-	/* Load up the call address */
-	lwz	%r9,ofw_call_addr - _start(%r8)
-	mtlr	%r9
-
-	/* Set argument */
-	mr	%r3,%r1
-	
-	/* Fire */
-	blrl
-	
-	lwz	%r3,16(%r1)
-	
-	/* Restore registers */
-	lwz	%r8,28(%r1)
-	mtlr	%r8
-	lwz	%r9,24(%r1)
-	lwz	%r8,20(%r1)
-	
-	addi	%r1,%r1,32
-	
-	/* Return */
-	blr
-
-
-setup_exc:
-	subi	%r1,%r1,32
-
-	stw	%r3,0(%r1)
-	mflr	%r3
-	stw	%r3,4(%r1)
-	stw	%r8,8(%r1)
-	stw	%r9,12(%r1)
-	stw	%r10,16(%r1)
-	stw	%r12,20(%r1)
-	
-	lis	%r8,0xe00000 at ha
-	xor	%r12,%r12,%r12
-	addi	%r12,%r12,0x300
-	addi	%r9,%r8,dsi_exc - _start
-	addi	%r10,%r8,dsi_end - _start
-
-copy_loop:	
-	cmp	0,0,%r9,%r10
-	beq	ret_setup_exc
-
-	mr	%r3,%r12
-	bl	ofw_print_number
-	bl	ofw_print_space
-	
-	lwz	%r3,0(%r9)
-	stw	%r3,0(%r12)
-
-	bl	ofw_print_number
-	bl	ofw_print_eol
-
-	addi	%r12,%r12,4
-	addi	%r9,%r9,4
-	b	copy_loop
-	
-ret_setup_exc:
-	mfmsr	%r12
-	andi.	%r12,%r12,0xffbf 
-	mtmsr	%r12
-	
-	lwz	%r12,20(%r1)
-	lwz	%r10,16(%r1)
-	lwz	%r9,12(%r1)
-	lwz	%r8,8(%r1)
-
-	lwz	%r3,4(%r1)
-	mtlr	%r3
-	lwz	%r3,0(%r1)
-	
-	blr
-
-dsi_exc:
-	subi	%r1,%r1,16
-	
-	stw	%r0,0(%r1)
-	stw	%r3,4(%r1)
-
-	mfsrr0	%r3
-	addi	%r3,%r3,4
-	mtsrr0	%r3
-
-	/* mfsrr1	%r3 */
-	/* ori	%r3,%r3,2 */
-	/* mtsrr1	%r3 */
-		
-	lwz	%r3,4(%r1)
-	lwz	%r0,0(%r1)
-
-	addi	%r1,%r1,16
-	rfi
-dsi_end:	
-					
 	.org	0x1000
 freeldr_banner:
 	.ascii	"ReactOS OpenFirmware Boot Program\r\n\0"
@@ -1153,79 +143,12 @@
 freeldr_halt:
 	.ascii	"ReactOS OpenFirmware Boot Program Halting\r\n\0"
 
-freeldr_reg_init:
-	.ascii	"r\0"
-freeldr_reg_lr:	
-	.ascii	"lr \0"
-freeldr_reg_cr:	
-	.ascii	"cr \0"
-freeldr_reg_ctr:	
-	.ascii	"ctr\0"
-freeldr_reg_msr:	
-	.ascii	"msr\0"
-			
-ofw_call_addr:	
-	.long	0
-
 ofw_memory_size:
 	.long	0
 	.long	0
 	.long	0
 	.long	0
 	
-ofw_finddevice_name:
-	.ascii	"finddevice\0"
-		
-ofw_getprop_name:
-	.ascii	"getprop\0"
-
-ofw_write_name:
-	.ascii	"write\0"
-
-ofw_read_name:
-	.ascii	"read\0"
-	
-ofw_exit_name:
-	.ascii	"exit\0"
-
-ofw_open_name:
-	.ascii	"open\0"
-
-ofw_child_name:
-	.ascii	"child\0"
-
-ofw_peer_name:
-	.ascii	"peer\0"
-		
-ofw_seek_name:
-	.ascii	"seek\0"
-	
-ofw_chosen_name:
-	.ascii	"/chosen\0"
-
-ofw_stdout_name:
-	.ascii	"stdout\0"
-
-ofw_memory_name:
-	.ascii	"/memory at 0\0"
-
-ofw_reg_name:
-	.ascii	"reg\0"
-	
-ofw_functions:
-	.long	ofw_finddevice_hook
-	.long	ofw_getprop_hook
-	.long	ofw_write
-	.long	ofw_read
-	.long	ofw_exit
-	.long	ofw_print_regs
-	.long	ofw_print_string
-	.long	ofw_print_number
-	.long	ofw_open
-	.long	ofw_child
-	.long	ofw_peer
-	.long   ofw_seek
-	
 	.org	0x2000
 stack:
 	.space	0x4000




More information about the Ros-diffs mailing list