Work on file usr/src/cmd/standalone/M.s
Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v7
--- /dev/null
+/ 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
+