/*
* Boot first processor
*/
TEXT start(SB),$0
/* clear bss */
CALL main(SB)
/* never returns */
TEXT traptab(SB),$0
CALL noerrcode(SB) /* divide */
CALL noerrcode(SB) /* debug */
CALL noerrcode(SB) /* non maskable interrupt */
CALL noerrcode(SB) /* breakpoint */
CALL noerrcode(SB) /* overflow */
CALL noerrcode(SB) /* bounds check */
CALL noerrcode(SB) /* invalid opcode */
CALL noerrcode(SB) /* coprocessor not available */
CALL errcode(SB) /* double fault */
CALL noerrcode(SB) /* coprocessor segment overrun */
CALL errcode(SB) /* invalid tss */
CALL errcode(SB) /* segment not present */
CALL errcode(SB) /* stack exception */
CALL errcode(SB) /* general protection exception */
CALL errcode(SB) /* page fault */
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
PUSH EAX
/* drop through */
TEXT errcode(SB),$0
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH EBP
PUSH ESI
PUSH EDI
CALL trap(SB)
POP EDI
POP ESI
POP EBP
POP EDX
POP ECX
POP EBX
POP EAX
ADD $8,ESP /* jump over error code + return addr */
IRET