Annotation of linux/kernel/asm.s, revision 1.1.1.4

1.1       root        1: /*
1.1.1.2   root        2:  *  linux/kernel/asm.s
                      3:  *
                      4:  *  (C) 1991  Linus Torvalds
                      5:  */
                      6: 
                      7: /*
1.1       root        8:  * asm.s contains the low-level code for most hardware faults.
                      9:  * page_exception is handled by the mm, so that isn't here. This
                     10:  * file also handles (hopefully) fpu-exceptions due to TS-bit, as
                     11:  * the fpu must be properly saved/resored. This hasn't been tested.
                     12:  */
                     13: 
                     14: .globl _divide_error,_debug,_nmi,_int3,_overflow,_bounds,_invalid_op
1.1.1.3   root       15: .globl _double_fault,_coprocessor_segment_overrun
1.1       root       16: .globl _invalid_TSS,_segment_not_present,_stack_segment
1.1.1.2   root       17: .globl _general_protection,_coprocessor_error,_irq13,_reserved
1.1.1.4 ! root       18: .globl _alignment_check
1.1       root       19: 
                     20: _divide_error:
                     21:        pushl $_do_divide_error
                     22: no_error_code:
                     23:        xchgl %eax,(%esp)
                     24:        pushl %ebx
                     25:        pushl %ecx
                     26:        pushl %edx
                     27:        pushl %edi
                     28:        pushl %esi
                     29:        pushl %ebp
                     30:        push %ds
                     31:        push %es
                     32:        push %fs
                     33:        pushl $0                # "error code"
                     34:        lea 44(%esp),%edx
                     35:        pushl %edx
                     36:        movl $0x10,%edx
                     37:        mov %dx,%ds
                     38:        mov %dx,%es
                     39:        mov %dx,%fs
                     40:        call *%eax
                     41:        addl $8,%esp
                     42:        pop %fs
                     43:        pop %es
                     44:        pop %ds
                     45:        popl %ebp
                     46:        popl %esi
                     47:        popl %edi
                     48:        popl %edx
                     49:        popl %ecx
                     50:        popl %ebx
                     51:        popl %eax
                     52:        iret
                     53: 
                     54: _debug:
                     55:        pushl $_do_int3         # _do_debug
                     56:        jmp no_error_code
                     57: 
                     58: _nmi:
                     59:        pushl $_do_nmi
                     60:        jmp no_error_code
                     61: 
                     62: _int3:
                     63:        pushl $_do_int3
                     64:        jmp no_error_code
                     65: 
                     66: _overflow:
                     67:        pushl $_do_overflow
                     68:        jmp no_error_code
                     69: 
                     70: _bounds:
                     71:        pushl $_do_bounds
                     72:        jmp no_error_code
                     73: 
                     74: _invalid_op:
                     75:        pushl $_do_invalid_op
                     76:        jmp no_error_code
                     77: 
                     78: _coprocessor_segment_overrun:
                     79:        pushl $_do_coprocessor_segment_overrun
                     80:        jmp no_error_code
                     81: 
                     82: _reserved:
                     83:        pushl $_do_reserved
                     84:        jmp no_error_code
                     85: 
1.1.1.2   root       86: _irq13:
                     87:        pushl %eax
                     88:        xorb %al,%al
                     89:        outb %al,$0xF0
                     90:        movb $0x20,%al
                     91:        outb %al,$0x20
                     92:        jmp 1f
                     93: 1:     jmp 1f
                     94: 1:     outb %al,$0xA0
                     95:        popl %eax
1.1.1.3   root       96:        jmp _coprocessor_error
1.1       root       97: 
                     98: _double_fault:
                     99:        pushl $_do_double_fault
                    100: error_code:
                    101:        xchgl %eax,4(%esp)              # error code <-> %eax
                    102:        xchgl %ebx,(%esp)               # &function <-> %ebx
                    103:        pushl %ecx
                    104:        pushl %edx
                    105:        pushl %edi
                    106:        pushl %esi
                    107:        pushl %ebp
                    108:        push %ds
                    109:        push %es
                    110:        push %fs
                    111:        pushl %eax                      # error code
                    112:        lea 44(%esp),%eax               # offset
                    113:        pushl %eax
                    114:        movl $0x10,%eax
                    115:        mov %ax,%ds
                    116:        mov %ax,%es
                    117:        mov %ax,%fs
                    118:        call *%ebx
                    119:        addl $8,%esp
                    120:        pop %fs
                    121:        pop %es
                    122:        pop %ds
                    123:        popl %ebp
                    124:        popl %esi
                    125:        popl %edi
                    126:        popl %edx
                    127:        popl %ecx
                    128:        popl %ebx
                    129:        popl %eax
                    130:        iret
                    131: 
                    132: _invalid_TSS:
                    133:        pushl $_do_invalid_TSS
                    134:        jmp error_code
                    135: 
                    136: _segment_not_present:
                    137:        pushl $_do_segment_not_present
                    138:        jmp error_code
                    139: 
                    140: _stack_segment:
                    141:        pushl $_do_stack_segment
                    142:        jmp error_code
                    143: 
                    144: _general_protection:
                    145:        pushl $_do_general_protection
                    146:        jmp error_code
                    147: 
1.1.1.4 ! root      148: _alignment_check:
        !           149:        pushl $_do_alignment_check
        !           150:        jmp error_code
        !           151: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.