From: Dave A. <ai...@us...> - 2003-02-12 02:38:05
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot In directory sc8-pr-cvs1:/tmp/cvs-serv5736/arch/vax/boot Modified Files: cpu_sel.S head.S lib.S mmstart.S Log Message: DA: update for new toolchain build... add percentage signs to all assembly routines Index: cpu_sel.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/cpu_sel.S,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- cpu_sel.S 20 May 2002 09:56:18 -0000 1.8 +++ cpu_sel.S 12 Feb 2003 02:37:32 -0000 1.9 @@ -72,12 +72,12 @@ movl *CVAX_SIDEX_ADDR, cpu_sidex # Is this a Q22-bus machine or a VAXstation 3100 series? - extv $CVAX_SIDEX_TYPE_SHIFT, $CVAX_SIDEX_TYPE_SIZE, cpu_sidex, r0 + extv $CVAX_SIDEX_TYPE_SHIFT, $CVAX_SIDEX_TYPE_SIZE, cpu_sidex, %r0 - cmpl $CVAX_SIDEX_TYPE_Q22, r0 + cmpl $CVAX_SIDEX_TYPE_Q22, %r0 beql cvax_q22 - cmpl $CVAX_SIDEX_TYPE_VS3100, r0 + cmpl $CVAX_SIDEX_TYPE_VS3100, %r0 beql cvax_vs3100 # Type E/P/L 20040004 at console to get SIDEX value and report to @@ -90,15 +90,15 @@ cvax_q22: # There are 3 different Q22 CVAX implementations, we only support # the KA650 at the moment - extv $CVAX_Q22_SUBTYPE_SHIFT, $CVAX_Q22_SUBTYPE_SIZE, cpu_sidex, r0 + extv $CVAX_Q22_SUBTYPE_SHIFT, $CVAX_Q22_SUBTYPE_SIZE, cpu_sidex, %r0 - cmpl $CVAX_Q22_SUBTYPE_KA640, r0 + cmpl $CVAX_Q22_SUBTYPE_KA640, %r0 beql cvax_q22_ka640 - cmpl $CVAX_Q22_SUBTYPE_KA650, r0 + cmpl $CVAX_Q22_SUBTYPE_KA650, %r0 beql cvax_q22_ka650 - cmpl $CVAX_Q22_SUBTYPE_KA655, r0 + cmpl $CVAX_Q22_SUBTYPE_KA655, %r0 beql cvax_q22_ka655 # Type E/P/L 20040004 at console to get SIDEX value and report to @@ -140,15 +140,15 @@ vax_uvax2: # Extract subtype from SID - extv $UVAX2_SID_SUBTYPE_SHIFT, $UVAX2_SID_SUBTYPE_SIZE, cpu_sid, r0 + extv $UVAX2_SID_SUBTYPE_SHIFT, $UVAX2_SID_SUBTYPE_SIZE, cpu_sid, %r0 - cmpl $UVAX2_SID_SUBTYPE_KA630, r0 + cmpl $UVAX2_SID_SUBTYPE_KA630, %r0 beql uvax2_ka630 - cmpl $UVAX2_SID_SUBTYPE_KA410, r0 + cmpl $UVAX2_SID_SUBTYPE_KA410, %r0 beql uvax2_ka410 - cmpl $UVAX2_SID_SUBTYPE_CHARON, r0 + cmpl $UVAX2_SID_SUBTYPE_CHARON, %r0 beql uvax2_ka630 # Type E/I PR$_SID at console to get SID register value and report to @@ -173,14 +173,14 @@ vax_soc: movl *SOC_SIDEX_ADDR, cpu_sidex #specific check for value of sid for VXT2000 - extv $SOC_SIDEX_TYPE_SHIFT, $SOC_SIDEX_TYPE_SIZE, cpu_sidex, r0 - cmpl $SOC_SIDEX_TYPE_VXT, r0 + extv $SOC_SIDEX_TYPE_SHIFT, $SOC_SIDEX_TYPE_SIZE, cpu_sidex, %r0 + cmpl $SOC_SIDEX_TYPE_VXT, %r0 beql soc_vxt # Extract subtype from SID - extv $SOC_Q22_SUBTYPE_SHIFT, $SOC_Q22_SUBTYPE_SIZE, cpu_sidex, r0 + extv $SOC_Q22_SUBTYPE_SHIFT, $SOC_Q22_SUBTYPE_SIZE, cpu_sidex, %r0 - cmpl $SOC_Q22_SUBTYPE_KA660, r0 + cmpl $SOC_Q22_SUBTYPE_KA660, %r0 beql soc_ka660 # Type E/I PR$_SID at console to get SID register value and report to Index: head.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/head.S,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- head.S 9 Apr 2002 13:50:55 -0000 1.15 +++ head.S 12 Feb 2003 02:37:32 -0000 1.16 @@ -29,18 +29,18 @@ mtpr $0, $PR_MAPEN mtpr $31, $PR_IPL # save r11, ap and scbb and location of command line - movl ap, boot_ap - movl r11, boot_r11 + movl %ap, boot_ap + movl %r11, boot_r11 mfpr $PR_SCBB, boot_scb - movab bootparam, r5 - addl2 $PAGE_OFFSET,r5 # we will only access this when mapen=1 - movl r5,kernel_cmd_line + movab bootparam, %r5 + addl2 $PAGE_OFFSET,%r5 # we will only access this when mapen=1 + movl %r5,kernel_cmd_line # put the sp somewhere safe, over our bootblock in fact - moval start, r5 - subl2 $0x200, r5 - movl r5,sp + moval start, %r5 + subl2 $0x200, %r5 + movl %r5,%sp -# movzbl $0x42,r2 +# movzbl $0x42,%r2 # jsb 0x20040058 jsb identify_cpu @@ -49,52 +49,52 @@ # pointers to virtual addresses in S0 space. We need to change # the pointers to the functions we use before VM init to point # into the newly-loaded kernel image.) - movl mv, r2 - moval start, r3 + movl mv, %r2 + moval start, %r3 - subl2 $PAGE_OFFSET+KERNEL_START_PHYS, r3 - addl2 r3, MV_PRE_VM_PUTCHAR(r2) - addl2 r3, MV_PRE_VM_GETCHAR(r2) - addl2 r3, MV_CPU_TYPE_STR(r2) + subl2 $PAGE_OFFSET+KERNEL_START_PHYS, %r3 + addl2 %r3, MV_PRE_VM_PUTCHAR(%r2) + addl2 %r3, MV_PRE_VM_GETCHAR(%r2) + addl2 %r3, MV_CPU_TYPE_STR(%r2) # pre_vm_init is called after we relocate - subl2 $PAGE_OFFSET, MV_PRE_VM_INIT(r2) + subl2 $PAGE_OFFSET, MV_PRE_VM_INIT(%r2) # print the cpu type jsb crlf - movab msg_cpu_type, r10 + movab msg_cpu_type, %r10 jsb printstr jsb crlf - moval kernel_cmd_line, r10 - movl (r10),r10 + moval kernel_cmd_line, %r10 + movl (%r10),%r10 jsb printint - movl mv, r10 - calls $0, *MV_CPU_TYPE_STR(r10) - movl r0, r10 + movl mv, %r10 + calls $0, *MV_CPU_TYPE_STR(%r10) + movl %r0, %r10 jsb printstr jsb crlf # print first line of debug diagnostics - movab msg_loaded, r10 # ascii string + movab msg_loaded, %r10 # ascii string jsb printstr - moval start, r10 # where we were loaded + moval start, %r10 # where we were loaded jsb printint jsb crlf - movab msg_registers, r10 # ascii string + movab msg_registers, %r10 # ascii string jsb printstr jsb space - movl boot_r11, r11 - movl r11,r10 # r11 (holds the rpb base address, usually 0x0 ) + movl boot_r11, %r11 + movl %r11,%r10 # r11 (holds the rpb base address, usually 0x0 ) jsb printint jsb space - movl 48(r11), r10 # saved r5 in RPB (argument to BOOT command) + movl 48(%r11), %r10 # saved r5 in RPB (argument to BOOT command) jsb printint jsb space - movl ap, r10 # argument pointer (struct arglist) + movl %ap, %r10 # argument pointer (struct arglist) jsb printint jsb space - movl sp, r10 # stack pointer + movl %sp, %r10 # stack pointer jsb printint jsb crlf @@ -112,27 +112,27 @@ #inside one chunk the data is moved bottom-to-top. #Assumed that 1MB - load_address > 65535B otherwise #it will break. - movl $__bss_start,r6 - subl2 $start,r6 # byte count to r6 - movab __bss_start,r1 - subl2 $0xffff, r1 # r1 points to top chunk of source - movl $KERNEL_START_PHYS, r3 # dest address to r3 - addl2 r6,r3 - subl2 $0xffff,r3 #r3 points to top chunk of dest + movl $__bss_start,%r6 + subl2 $start,%r6 # byte count to r6 + movab __bss_start,%r1 + subl2 $0xffff, %r1 # r1 points to top chunk of source + movl $KERNEL_START_PHYS, %r3 # dest address to r3 + addl2 %r6,%r3 + subl2 $0xffff,%r3 #r3 points to top chunk of dest # copy_chunk: - cmpl $0xffff,r6 + cmpl $0xffff,%r6 bgeq last_chunk - movc3 $0xffff,(r1),(r3) - subl2 $0x1fffe,r1 #place r1 to bottom of new src. chunk - subl2 $0x1fffe,r3 #place r3 to bottom of new dest. chunk - subl2 $0xffff,r6 + movc3 $0xffff,(%r1),(%r3) + subl2 $0x1fffe,%r1 #place r1 to bottom of new src. chunk + subl2 $0x1fffe,%r3 #place r3 to bottom of new dest. chunk + subl2 $0xffff,%r6 beql copy_done #this instruction is probably not needed brb copy_chunk last_chunk: - movab start,r1 - movl $KERNEL_START_PHYS,r3 - movc3 r6,(r1),(r3) + movab start,%r1 + movl $KERNEL_START_PHYS,%r3 + movc3 %r6,(%r1),(%r3) copy_done: # @@ -140,37 +140,37 @@ # instead of when we are preparing the loadable image because it # makes the image smaller - subl3 $__bss_start, $_end, r6 # length of .bss to r6 + subl3 $__bss_start, $_end, %r6 # length of .bss to r6 - subl3 $start, $__bss_start, r3 # offset of .bss to r3 - addl2 $KERNEL_START_PHYS, r3 # phys address of .bss start now in r3 + subl3 $start, $__bss_start, %r3 # offset of .bss to r3 + addl2 $KERNEL_START_PHYS, %r3 # phys address of .bss start now in r3 fill_chunk: - cmpl $0xffff, r6 + cmpl $0xffff, %r6 bgeq last_fill - movc5 $0, (r3), $0, $0xffff, (r3) + movc5 $0, (%r3), $0, $0xffff, (%r3) # After movc5, r3 points to next dest addr - subl2 $0xffff, r6 + subl2 $0xffff, %r6 beql fill_done brb fill_chunk last_fill: - movc5 $0, (r3), $0, r6, (r3) + movc5 $0, (%r3), $0, %r6, (%r3) # After movc5, r3 points to just after # end of kernel fill_done: - decl r3 # - movl r3, r9 # save phys addr of last byte of kernel + decl %r3 # + movl %r3, %r9 # save phys addr of last byte of kernel # in R9. We will need this later # Need to know the distance we have moved the kernel, so that we can # fix up the machine vector pointer after we jump - moval start, r2 - subl3 r2, $KERNEL_START_PHYS, r2 # r2 = START_PHYS - load_address + moval start, %r2 + subl3 %r2, $KERNEL_START_PHYS, %r2 # r2 = START_PHYS - load_address # calculate the position after jump to reloc - movl $KERNEL_START_PHYS, r3 - addl2 $reloc, r3 - subl2 $start,r3 - jmp (r3) + movl $KERNEL_START_PHYS, %r3 + addl2 $reloc, %r3 + subl2 $start,%r3 + jmp (%r3) halt reloc: @@ -179,17 +179,17 @@ # fix up the machine vector pointer (by restoring it from boot_mv and # adding in the distance that the kernel was re-located) - addl3 r2, boot_mv, mv - movl mv, r3 + addl3 %r2, boot_mv, mv + movl mv, %r3 #and the pre-vm i/o functions - addl2 r2, MV_PRE_VM_PUTCHAR(r3) - addl2 r2, MV_PRE_VM_GETCHAR(r3) - addl2 r2, MV_CPU_TYPE_STR(r3) + addl2 %r2, MV_PRE_VM_PUTCHAR(%r3) + addl2 %r2, MV_PRE_VM_GETCHAR(%r3) + addl2 %r2, MV_CPU_TYPE_STR(%r3) - movab msg_relocated, r10 # debugging line no 2 + movab msg_relocated, %r10 # debugging line no 2 jsb printstr - moval reloc, r10 # where we are now (physical) + moval reloc, %r10 # where we are now (physical) jsb printint jsb crlf # @@ -198,10 +198,10 @@ jsb cpu_id # save RPB before it gets obliterated - movl boot_r11, r11 - movc3 rpb_size, (r11), boot_rpb - movl mv, r3 - calls $0, *MV_PRE_VM_INIT(r3) + movl boot_r11, %r11 + movc3 rpb_size, (%r11), boot_rpb + movl mv, %r3 + calls $0, *MV_PRE_VM_INIT(%r3) # set up the system page table for all of physical memory. # for the i386, the first page only is setup. For us, as the @@ -222,21 +222,21 @@ # # Correction, for 3100/85 it needs to be page aligned. - addl3 $0x200, r9, r5 # R9 holds kernel end - bicl2 $0x1ff, r5 # R5 is R9 rounded up to page aligned - moval swapper_pg_dir, r0 + addl3 $0x200, %r9, %r5 # R9 holds kernel end + bicl2 $0x1ff, %r5 # R5 is R9 rounded up to page aligned + moval swapper_pg_dir, %r0 # This is (pgd_t)swapper_pg_dir[2].br - movl r5, ASM_SBR_OFFSET(r0) # save address of base of system page table + movl %r5, ASM_SBR_OFFSET(%r0) # save address of base of system page table # Fill in the main part of the SPT (the entries that map physical # memory) - movl $0, r6 # pfn number - movl 76(r11), r7 # pfncnt from vmb. + movl $0, %r6 # pfn number + movl 76(%r11), %r7 # pfncnt from vmb. sysfill: - bisl3 $_PAGE_VALID + _PAGE_UW, r6, (r5)+ + bisl3 $_PAGE_VALID + _PAGE_UW, %r6, (%r5)+ # set PFN, VALID bit and protection UW in PTE - incl r6 # next PFN - cmpl r6, r7 # one page of PTE Table -> 128 Pages of PTES + incl %r6 # next PFN + cmpl %r6, %r7 # one page of PTE Table -> 128 Pages of PTES blssu sysfill # We need to align the IOMAP/VMALLOC tables (well at least the VMALLOC @@ -246,61 +246,61 @@ # is, so round up r7 to the next page, add 7 then and with 7, # check with r6 if the same we are aligned if not put zeros into the # PTE until we are aligned. - D.A. June 2001 (this stuff is bitchin..) - addl2 $0x7, r7 - bicl2 $7, r7 - cmpl r6, r7 + addl2 $0x7, %r7 + bicl2 $7, %r7 + cmpl %r6, %r7 beql nozerofl zerofl: - movl $0x00000000, (r5)+ - incl r6 # next PFN - cmpl r6, r7 # one page of PTE Table -> 128 Pages of PTES + movl $0x00000000, (%r5)+ + incl %r6 # next PFN + cmpl %r6, %r7 # one page of PTE Table -> 128 Pages of PTES blssu zerofl nozerofl: # Zero out the spare part of the SPT (the entries that will be used # to map I/O space and provide virtual addrs for vmalloc() later) - movl r5, iomap_base - addl2 $SPT_HWPTES_IOMAP+0, r7 + movl %r5, iomap_base + addl2 $SPT_HWPTES_IOMAP+0, %r7 sparef1: - movl $0x00000000, (r5)+ - incl r6 # next PFN - cmpl r6, r7 # one page of PTE Table -> 128 Pages of PTES + movl $0x00000000, (%r5)+ + incl %r6 # next PFN + cmpl %r6, %r7 # one page of PTE Table -> 128 Pages of PTES blssu sparef1 - movl r5, vmallocmap_base - addl2 $SPT_HWPTES_VMALLOC, r7 + movl %r5, vmallocmap_base + addl2 $SPT_HWPTES_VMALLOC, %r7 sparefill2: - movl $0x00000000, (r5)+ - incl r6 # next PFN - cmpl r6, r7 # one page of PTE Table -> 128 Pages of PTES + movl $0x00000000, (%r5)+ + incl %r6 # next PFN + cmpl %r6, %r7 # one page of PTE Table -> 128 Pages of PTES blssu sparefill2 # system page table is setup. Save SPT length and zap processor registers - moval swapper_pg_dir, r0 - movl r7, ASM_SLR_OFFSET(r0) - mtpr ASM_SBR_OFFSET(r0), $PR_SBR # set SBR - mtpr r7, $PR_SLR # set SLR + moval swapper_pg_dir, %r0 + movl %r7, ASM_SLR_OFFSET(%r0) + mtpr ASM_SBR_OFFSET(%r0), $PR_SBR # set SBR + mtpr %r7, $PR_SLR # set SLR # PCBB # set up the process control block. Some machines need a valid PCB for # mm to work properly. # We should use the pcb for the init task for this, but Since this bit # should be done in C, rather than hardwiring offsets, I have put a fake # PCB in a throwaway .init section below. - moval fake_pcb,r9 - movl $PAGE_OFFSET,88(r9) # p1br - mtpr r9, $PR_PCBB + moval fake_pcb,%r9 + movl $PAGE_OFFSET,88(%r9) # p1br + mtpr %r9, $PR_PCBB # no need to TBIA - memory mapping not enabled # ready to turn on VM - moval msg_starting_vm, r10 + moval msg_starting_vm, %r10 jsb printstr jsb crlf calls $0, VAX_start_mm # do that ole black magic # made it - moval swapper_pg_dir, r0 - addl2 $PAGE_OFFSET, ASM_SBR_OFFSET(r0) # fix up our reference to the system page tbl. + moval swapper_pg_dir, %r0 + addl2 $PAGE_OFFSET, ASM_SBR_OFFSET(%r0) # fix up our reference to the system page tbl. addl2 $PAGE_OFFSET, iomap_base # ... and the IOMAP PTEs addl2 $PAGE_OFFSET, vmallocmap_base # ... and the IOMAP PTEs addl2 $PAGE_OFFSET, mv # fix up machine vector pointer - movl mv, r3 - addl2 $PAGE_OFFSET, MV_CPU_TYPE_STR(r3) + movl mv, %r3 + addl2 $PAGE_OFFSET, MV_CPU_TYPE_STR(%r3) # relocate the interrupt stack. The C code will turn the # last page of the interrupt stack into a read-only guard @@ -309,18 +309,18 @@ # FIXME SMP: This needs to select the right stack for this CPU # rather than hard-coding the first one. Looks like we need to # determine our CPU_ID before this point... - moval interrupt_stack, r0 - addl2 $INT_STACK_SIZE, r0 - movl r0, sp + moval interrupt_stack, %r0 + addl2 $INT_STACK_SIZE, %r0 + movl %r0, %sp # Now that we have ISP (the interrupt stack pointer) sorted, # we need to move over to working on the kernel stack. We do this # my loading KSP with the top of the kernel stack for the 'init task' # and faking a saved PC/PSL on the interrupt stack which we then # 'return' to - moval init_task_union, r0 - addl2 $8192, r0 # taken from <linux/sched.h> - mtpr r0,$PR_KSP + moval init_task_union, %r0 + addl2 $8192, %r0 # taken from <linux/sched.h> + mtpr %r0,$PR_KSP pushl $0x001f0000 # IS=0, accmode=prevmode=K, IPL=31 pushab now_on_kstack @@ -351,21 +351,21 @@ clrl prom_sidex clrl cpu_type mfpr $PR_SID, cpu_type - movab msg_cpu_type, r10 + movab msg_cpu_type, %r10 jsb printstr - movl cpu_type, r10 + movl cpu_type, %r10 jsb printint jsb space - movl cpu_type, r7 - extv $24, $8, r7, r6 - cmpl r6, $0x0A + movl cpu_type, %r7 + extv $24, $8, %r7, %r6 + cmpl %r6, $0x0A blss no_sidex # note - we may not need to do this here. Is the board type used # before we remap prom ? movl 0x20040004, prom_sidex - movab msg_sidex, r10 + movab msg_sidex, %r10 jsb printstr - movl prom_sidex, r10 + movl prom_sidex, %r10 jsb printint no_sidex: jsb crlf Index: lib.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/lib.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- lib.S 26 Jan 2001 00:27:00 -0000 1.2 +++ lib.S 12 Feb 2003 02:37:32 -0000 1.3 @@ -5,35 +5,35 @@ .section .vaxbootlib -# r2 contains ASCII code of character to print to console, +# %r2 contains ASCII code of character to print to console, .globl boot_putchar boot_putchar: - movl mv, r0 - pushl r2 - calls $1, *MV_PRE_VM_PUTCHAR(r0) + movl mv, %r0 + pushl %r2 + calls $1, *MV_PRE_VM_PUTCHAR(%r0) rsb # print a long integer in hex. integer is in r10, uses r2 and r8 # .globl printint printint: - clrl r8 - clrl r2 - movzbl $0x1C, r2 - subl2 r2, r8 + clrl %r8 + clrl %r2 + movzbl $0x1C, %r2 + subl2 %r2, %r8 L1: - clrl r2 - ashl r8, r10, r2 - bicl2 $0xfffffff0, r2 -; bicl2 $-64, r2 - cmpl r2,$0x09 + clrl %r2 + ashl %r8, %r10, %r2 + bicl2 $0xfffffff0, %r2 +; bicl2 $-64, %r2 + cmpl %r2,$0x09 bleq H1 - addl2 $0x07, r2 + addl2 $0x07, %r2 H1: - addl2 $0x30, r2 + addl2 $0x30, %r2 jsb boot_putchar - addl2 $0x04, r8 - cmpl r8,$0x04 + addl2 $0x04, %r8 + cmpl %r8,$0x04 bneq L1 rsb # @@ -41,10 +41,10 @@ # .globl crlf crlf: - clrl r2 - movzbl $0x0A, r2 + clrl %r2 + movzbl $0x0A, %r2 jsb boot_putchar - movzbl $0x0D, r2 + movzbl $0x0D, %r2 jsb boot_putchar rsb # @@ -53,27 +53,27 @@ # .globl printstr printstr: - clrl r8 - movl r10 ,r5 -L2: clrl r2 - movzbl (r5),r2 + clrl %r8 + movl %r10 ,%r5 +L2: clrl %r2 + movzbl (%r5),%r2 jsb boot_putchar - incl r5 - cmpb (r5), $0x0 + incl %r5 + cmpb (%r5), $0x0 bneq L2 rsb .global printchar printchar: - movzbl (r10), r7 - cmpl r7, $0x7d + movzbl (%r10), %r7 + cmpl %r7, $0x7d bleq PASC2 - movzbl $0x2e, r7 -PASC2: cmpl r7, $0x41 + movzbl $0x2e, %r7 +PASC2: cmpl %r7, $0x41 bgeq PASC3 - movzbl $0x2e, r7 + movzbl $0x2e, %r7 PASC3: - movl r7,r2 + movl %r7,%r2 jsb boot_putchar rsb @@ -81,7 +81,7 @@ .globl space space: - movzbl $0x20, r2 + movzbl $0x20, %r2 jsb boot_putchar rsb Index: mmstart.S =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/mmstart.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- mmstart.S 26 Jun 2001 18:59:00 -0000 1.2 +++ mmstart.S 12 Feb 2003 02:37:32 -0000 1.3 @@ -16,52 +16,52 @@ .balign 0x200 VAX_start_mm: .word 0xffc # protect registers r2->r11 - movl sp,r8 # save the stack pointer - movl fp,r9 # save the frame pointer - clrl r4 # clear the decks - clrl r5 - clrl r6 - clrl r10 - movab VAX_start_mm, r10 # This is where we start mapping - ashl $-9, r10, r4 # calculate the pfn of the start of this fn - movab P0_table,r3 # Phys address of our P0 table - addl2 $PAGE_OFFSET,r3 # virtual address of our P0 table - ashl $0x02, r4, r5 # P0 PTE offset in bytes - subl2 r5, r3 # fake P0BR in bytes - ashl $-2, r5, r6 # fake P0LR in PTEs - addl2 $0x08, r6 # add in length of table - mtpr r3, $PR_P0BR # load P0BR - mtpr r6, $PR_P0LR # load P0LR + movl %sp,%r8 # save the stack pointer + movl %fp,%r9 # save the frame pointer + clrl %r4 # clear the decks + clrl %r5 + clrl %r6 + clrl %r10 + movab VAX_start_mm, %r10 # This is where we start mapping + ashl $-9, %r10, %r4 # calculate the pfn of the start of this fn + movab P0_table,%r3 # Phys address of our P0 table + addl2 $PAGE_OFFSET,%r3 # virtual address of our P0 table + ashl $0x02, %r4, %r5 # P0 PTE offset in bytes + subl2 %r5, %r3 # fake P0BR in bytes + ashl $-2, %r5, %r6 # fake P0LR in PTEs + addl2 $0x08, %r6 # add in length of table + mtpr %r3, $PR_P0BR # load P0BR + mtpr %r6, $PR_P0LR # load P0LR mtpr $PAGE_OFFSET,$PR_P1BR # make sure P1BR is sensible mtpr $0, $PR_P1LR # and zero length - movab P0_table,r3 # Phys address of P0table. - movl 0x08,r2 -P0fill: movl (r3), r1 # fill the P0table with the right pfns - addl2 r4, r1 - movl r1, (r3)+ - sobgtr r2, P0fill + movab P0_table,%r3 # Phys address of P0table. + movl $0x08,%r2 +P0fill: movl (%r3), %r1 # fill the P0table with the right pfns + addl2 %r4, %r1 + movl %r1, (%r3)+ + sobgtr %r2, P0fill # # fixup stack # - addl2 $PAGE_OFFSET, 8(sp) # saved ap. - addl2 $PAGE_OFFSET, 12(sp)# fixup saved fp - addl2 $PAGE_OFFSET, 16(sp)# fixup saved pc + addl2 $PAGE_OFFSET, 8(%sp) # saved ap. + addl2 $PAGE_OFFSET, 12(%sp)# fixup saved fp + addl2 $PAGE_OFFSET, 16(%sp)# fixup saved pc # active stack -# movl sp, r10 -# subl2 $0x80, r10 -# movl $0x40, r9 +# movl %sp, %r10 +# subl2 $0x80, %r10 +# movl $0x40, %r9 # jsb hexdump # halt - addl2 $PAGE_OFFSET, sp # fixup sp to virtual address - addl2 $PAGE_OFFSET, fp # fixup fp to virtual address - movab vreloc, r6 # where we want to end up (phys) - addl2 $PAGE_OFFSET, r6 # & virt + addl2 $PAGE_OFFSET, %sp # fixup sp to virtual address + addl2 $PAGE_OFFSET, %fp # fixup fp to virtual address + movab vreloc, %r6 # where we want to end up (phys) + addl2 $PAGE_OFFSET, %r6 # & virt # According to ARM, we should invalidate the whole TB here mtpr $0, $PR_TBIA # clear translation buffer mtpr $1, $PR_MAPEN # switch on mm. - jmp (r6) + jmp (%r6) halt vreloc: # made it. now fixup sp fp and stack frame # cant use prom routines now. |