Research V7 development
authorKen Thompson <ken@research.uucp>
Wed, 16 May 1979 21:27:51 +0000 (16:27 -0500)
committerKen Thompson <ken@research.uucp>
Wed, 16 May 1979 21:27:51 +0000 (16:27 -0500)
Work on file usr/src/cmd/standalone/M.s

Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v7

usr/src/cmd/standalone/M.s [new file with mode: 0644]

diff --git a/usr/src/cmd/standalone/M.s b/usr/src/cmd/standalone/M.s
new file mode 100644 (file)
index 0000000..d96690b
--- /dev/null
@@ -0,0 +1,166 @@
+/ Startup code for two-stage bootstrap
+
+/ non-UNIX instructions
+mfpi   = 6500^tst
+stst   = 170300^tst
+mtpi   = 6600^tst
+mfpd   = 106500^tst
+mtpd   = 106600^tst
+spl    = 230
+ldfps  = 170100^tst
+stfps  = 170200^tst
+wait   = 1
+rtt    = 6
+halt   = 0
+reset  = 5
+trap   = 104400
+
+.globl _end
+.globl _main
+start:
+       reset
+       mov     $340,PS
+       mov     $140100,sp
+
+/ set kernel I+D to physical 0 and IO page
+       clr     r1
+       mov     $77406,r2
+       mov     $KISA0,r3
+       mov     $KISD0,r4
+       jsr     pc,setseg
+       mov     $IO,-(r3)
+       clr     r1
+       mov     $KDSA0,r3
+       mov     $KDSD0,r4
+       jsr     pc,setseg
+       mov     $IO,-(r3)
+
+/ set user I+D to physical 64K (words) and IO page
+       mov     $4000,r1
+       mov     $UISA0,r3
+       mov     $UISD0,r4
+       jsr     pc,setseg
+       mov     $IO,-(r3)
+       mov     $4000,r1
+       mov     $UDSA0,r3
+       mov     $UDSD0,r4
+       jsr     pc,setseg
+       mov     $IO,-(r3)
+
+/ enable map
+       mov     $65,SSR3        / 22-bit map
+       bit     $20,SSR3
+       beq     1f
+       mov     $3,MSCR
+1:
+       mov     $30340,PS
+       inc     SSR0
+
+
+/ copy program to user I space
+       mov     $_end,r0
+       asr     r0
+       clr     r1
+1:
+       mov     (r1),-(sp)
+       mtpi    (r1)+
+       sob     r0,1b
+
+
+/ continue execution in user space copy
+       mov     $140004,sp
+       clr     *$KDSA6
+       mov     $140340,-(sp)
+       mov     $user,-(sp)
+       rtt
+user:
+       mov     $_end+512.,sp
+       mov     sp,r5
+
+       jsr     pc,_main
+
+       trap
+
+       br      user
+
+setseg:
+       mov     $8,r0
+1:
+       mov     r1,(r3)+
+       add     $200,r1
+       mov     r2,(r4)+
+       sob     r0,1b
+       rts     pc
+
+.globl _setseg
+_setseg:
+       mov     2(sp),r1
+       mov     r2,-(sp)
+       mov     r3,-(sp)
+       mov     r4,-(sp)
+       mov     $77406,r2
+       mov     $KISA0,r3
+       mov     $KISD0,r4
+       jsr     pc,setseg
+       mov     (sp)+,r4
+       mov     (sp)+,r3
+       mov     (sp)+,r2
+       rts     pc
+
+/ clrseg(addr,count)
+.globl _clrseg
+_clrseg:
+       mov     4(sp),r0
+       beq     2f
+       asr     r0
+       bic     $!77777,r0
+       mov     2(sp),r1
+1:
+       clr     -(sp)
+       mtpi    (r1)+
+       sob     r0,1b
+2:
+       rts     pc
+
+
+/ mtpi(word,addr)
+.globl _mtpi
+_mtpi:
+       mov     4(sp),r0
+       mov     2(sp),-(sp)
+       mtpi    (r0)+
+       rts     pc
+
+.globl __rtt
+__rtt:
+       halt
+
+PS     = 177776
+SSR0   = 177572
+SSR1   = 177574
+SSR2   = 177576
+SSR3   = 172516
+KISA0  = 172340
+KISA1  = 172342
+KISA7  = 172356
+KISD0  = 172300
+KISD7  = 172316
+KDSA0  = 172360
+KDSA6  = 172374
+KDSA7  = 172376
+KDSD0  = 172320
+KDSD5  = 172332
+SISA0  = 172240
+SISA1  = 172242
+SISD0  = 172200
+SISD1  = 172202
+UISA0  = 177640
+UISD0  = 177600
+UDSA0  = 177660
+UDSD0  = 177620
+MSCR   = 017777746     / 11/70 memory control register
+IO     = 177600
+SWR    = 177570
+
+.data
+