📄 entry.s
字号:
addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap40) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #40,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap41) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #41,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap42) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #42,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap43) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #43,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap44) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #44,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap45) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #45,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap46) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #46,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(trap47) SAVE_ALL moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall movel %sp,%sp@- | stack frame pointer argument movel #47,%sp@- jsr SYMBOL_NAME(trap_c) addql #8,%sp jra SYMBOL_NAME(ret_from_exception)ENTRY(reschedule) | save top of frame pea %sp@ jbsr SYMBOL_NAME(set_esp0) addql #4,%sp pea SYMBOL_NAME(ret_from_exception) jmp SYMBOL_NAME(schedule)ENTRY(system_call) SAVE_ALL movel #-LENOSYS,LD0(%sp) | default return value in d0 | original D0 is in orig_d0 movel %d0,%d2 | save top of frame pea %sp@ jbsr SYMBOL_NAME(set_esp0) addql #4,%sp cmpl #NR_syscalls,%d2 jcc SYMBOL_NAME(ret_from_exception) lea SYMBOL_NAME(sys_call_table),%a0 lsl #2,%d2 | movel %a0@(%d2:l:4),%d3 movel %a0@(%d2),%d3 jeq SYMBOL_NAME(ret_from_exception) lsr #2,%d2 movel SYMBOL_NAME(current_set),%a0 btst #5,%a0@(LTASK_FLAGS+3) | PF_TRACESYS bnes 1f movel %d3,%a0 jbsr %a0@ movel %d0,%sp@(LD0) | save the return value jra SYMBOL_NAME(ret_from_exception)1: subql #4,%sp SAVE_SWITCH_STACK jbsr SYMBOL_NAME(syscall_trace) RESTORE_SWITCH_STACK addql #4,%sp movel %d3,%a0 jbsr %a0@ movel %d0,%sp@(LD0) | save the return value subql #4,%sp | dummy return address SAVE_SWITCH_STACK jbsr SYMBOL_NAME(syscall_trace)SYMBOL_NAME_LABEL(ret_from_signal) RESTORE_SWITCH_STACK addql #4,%spSYMBOL_NAME_LABEL(ret_from_exception) btst #5,%sp@(LSR) | check if returning to kernel bnes 2f | if so, skip resched, signals tstl SYMBOL_NAME(need_resched) jne SYMBOL_NAME(reschedule) movel SYMBOL_NAME(current_set),%a0 cmpl #SYMBOL_NAME(task),%a0 | task[0] cannot have signals jeq 2f bclr #5,%a0@(LTASK_FLAGS+1) | check for delayed trace jeq 1f bclr #7,%sp@(LSR) | clear trace bit in SR pea 1 | send SIGTRAP movel %a0,%sp@- pea 5 jbsr SYMBOL_NAME(send_sig) addql #8,%sp addql #4,%sp movel SYMBOL_NAME(current_set),%a01: tstl %a0@(LTASK_STATE) | state jne SYMBOL_NAME(reschedule) tstl %a0@(LTASK_COUNTER) | counter jeq SYMBOL_NAME(reschedule) movel %a0@(LTASK_BLOCKED),%d0 movel %d0,%d1 | save blocked in d1 for sig handling notl %d0 btst #4,%a0@(LTASK_FLAGS+3) | PF_PTRACED jeq 1f moveq #-1,%d0 | let the debugger see all signals1: andl %a0@(LTASK_SIGNAL),%d0 jne Lsignal_return2: RESTORE_ALL | Does RTELsignal_return: subql #4,%sp | dummy return address SAVE_SWITCH_STACK pea %sp@(SWITCH_STACK_SIZE) movel %d1,%sp@- jsr SYMBOL_NAME(do_signal) addql #8,%sp RESTORE_SWITCH_STACK addql #4,%sp RESTORE_ALL/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(timerhandler) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #0x40,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(serialhandler) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #0x42,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler1) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #65,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler2) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #66,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler3) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #67,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler4) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #68,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler5) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #69,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler6) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0 movel %sp,%sp@- movel #70,%sp@- | put vector # on stack (was %d0) jbsr SYMBOL_NAME(process_int)| process the IRQ addql #8,%sp | pop parameters off stack bra ret_from_interrupt | this was fallthrough/*** This is the main interrupt handler, responsible for calling process_int()*/SYMBOL_NAME_LABEL(inthandler7) SAVE_ALL oriw #0x700,%sr moveq #-1,%d0 movel %d0,%sp@(LORIG_D0) | a -1 in the ORIG_D0 field | signifies that the stack frame | is NOT for syscall addql #1,SYMBOL_NAME(intr_count) | put exception # in d0 |movel %sp@(LFORMATVEC),%d0 |lsr #4,%d0 movew %sp@(LFORMATVEC),%d0 and #0x3ff,%d0 | bfextu %sp@(LFORMATVEC){#4,#10},%d0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -