@@ 1,6 1,6 @@
/*
- * boot first processor
+ * boot processor
*/
TEXT start(SB),$0
@@ 8,351 8,112 @@ TEXT start(SB),$0
CALL main(SB)
/* never returns */
-
/*
* standard traps
*/
-divtrap:
+
+TEXT trap0(SB),$0
+
PUSHL $0
PUSHL $0
JMP alltrap
-debtrap:
+
+TEXT trap1(SB),$0
+
PUSHL $0
PUSHL $1
JMP alltrap
-nmitrap:
+
+TEXT trap2(SB),$0
+
PUSHL $0
PUSHL $2
JMP alltrap
-bptrap:
+
+TEXT trap3(SB),$0
+
PUSHL $0
PUSHL $3
JMP alltrap
-oftrap:
+
+TEXT trap4(SB),$0
+
PUSHL $0
PUSHL $4
JMP alltrap
-boundtrap:
+
+TEXT trap5(SB),$0
+
PUSHL $0
PUSHL $5
JMP alltrap
-invtrap:
+
+TEXT trap6(SB),$0
+
PUSHL $0
PUSHL $6
JMP alltrap
-nocotrap:
+
+TEXT trap7(SB),$0
+
PUSHL $0
PUSHL $7
JMP alltrap
-dfault:
+
+TEXT trap8(SB),$0
+
PUSHL $8
JMP alltrap
-csotrap:
+
+TEXT trap9(SB),$0
+
PUSHL $0
PUSHL $9
JMP alltrap
-tsstrap:
+
+TEXT trap10(SB),$0
+
PUSHL $0
PUSHL $10
JMP alltrap
-segtrap:
+
+TEXT trap11(SB),$0
+
PUSHL $11
JMP alltrap
-stacktrap:
+
+TEXT trap12(SB),$0
+
PUSHL $12
JMP alltrap
-prottrap:
+
+TEXT trap13(SB),$0
+
PUSHL $13
JMP alltrap
-pagefault:
+
+TEXT trap14(SB),$0
+
PUSHL $14
JMP alltrap
-cetrap:
+
+TEXT trap15(SB),$0
+
PUSHL $0
PUSHL $15
JMP alltrap
- CALL noerrcode(SB) /* coprocessor error */
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
- CALL noerrcode(SB)
-
-TEXT noerrcode(SB),$0
-
- PUSHL EAX
- MOVL 4(ESP),EAX
-/* JMP george /**/
-
-TEXT errcode(SB),$0
-
- XCHGL (ESP),EAX
- /* fall through */
-
-TEXT saveregs(SB),$0
-
-george:
- PUSHL EBX
- MOVL $noerrcode(SB),EBX /* calculate trap number */
- SUBL EAX,EBX /* ... */
- SHRL $1,EBX /* ... */
- PUSHL ECX
- PUSHL EDX
- PUSHL EBP
- PUSHL ESI
- PUSHL EDI
- PUSHL EBX /* save trap number */
- CALL trap(SB)
- ADDL $4,ESP /* drop trap number */
- POPL EDI
- POPL ESI
- POPL EBP
- POPL EDX
- POPL ECX
- POPL EBX
- POPL EAX
- ADDL $4,ESP /* drop error code */
- IRET
-
-TEXT trap(SB),$0
- RET
+TEXT invtrap(SB),$0
+
+ PUSHL $0
+ PUSHL $16
+ JMP alltrap
+
+alltrap:
+ PUSHAL
+ CALL trap(SB)
+ POPAL
+ IRETL
TEXT main(SB),$0
@@ 0,0 1,15 @@
+typedef unsigned short ushort;
+typedef unsigned char uchar;
+typedef unsigned long ulong;
+typedef long vlong;
+typedef union Length Length;
+
+union Length
+{
+ char clength[8];
+ vlong vlength;
+ struct{
+ long hlength;
+ long length;
+ };
+};