00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 .globl free_stacks_ptr
00022 .globl free_stacks
00023 .globl intr_body
00024 .globl sysentry
00025
00026 .macro macro_push_context
00027
00028 pusha
00029 push %ds
00030 push %es
00031 push %fs
00032 push %gs
00033 .endm
00034
00035 .extern pr
00036 .macro macro_pop_context
00037
00038 pop %gs
00039 pop %fs
00040 pop %es
00041 pop %ds
00042 popa
00043 .endm
00044
00045 .macro macro_setup_segms
00046
00047 movw $0x10, %ax
00048 movw %ax, %ds
00049 movw %ax, %ss
00050 movw %ax, %es
00051 movw %ax, %fs
00052 movw %ax, %gs
00053 .endm
00054
00055 .macro intr code
00056
00057 .globl intr\code
00058 intr\code:
00059 pushl $0
00060 pushl $\code
00061 jmp intr_body
00062 .endm
00063
00064 .macro intr_err code
00065
00066 .globl intr\code
00067 intr\code:
00068 pushl $\code
00069 jmp intr_body
00070 .endm
00071
00072
00073
00074
00075 sysentry:
00076
00077 pushl $0x23
00078 pushl %ecx
00079 pushf
00080 pushl $0x1b
00081 pushl %edx
00082
00083 pushf
00084 pushl $0x30
00085
00086
00087 macro_push_context
00088 macro_setup_segms
00089
00090 pushl %ebp
00091 movl %esp, %ebp
00092 call *exc
00093 popl %ebp
00094
00095 macro_pop_context
00096 add $0x4, %esp
00097 popf
00098
00099 add $0x14, %esp
00100
00101 sti
00102 sysexit
00103
00104
00105
00106 intr_body:
00107 macro_push_context
00108 macro_setup_segms
00109
00110 pushl %ebp
00111 movl %esp, %ebp
00112 call *exc
00113 popl %ebp
00114
00115 macro_pop_context
00116 add $8, %esp
00117
00118 iret
00119
00120
00121
00122
00123 intr 0x00
00124 intr 0x01
00125 intr 0x02
00126 intr 0x03
00127 intr 0x04
00128 intr 0x05
00129 intr 0x06
00130 intr 0x07
00131
00132 intr 0x09
00133 intr_err 0x0a
00134 intr_err 0x0b
00135
00136 intr_err 0x0d
00137 intr_err 0x0e
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 intr_err 0x0f
00149 intr 0x10
00150 intr_err 0x11
00151 intr 0x12
00152 intr 0x13
00153 intr 0x14
00154 intr 0x15
00155 intr 0x16
00156 intr 0x17
00157 intr 0x18
00158 intr 0x19
00159 intr 0x1a
00160 intr 0x1b
00161 intr 0x1c
00162 intr 0x1d
00163 intr 0x1e
00164 intr 0x1f
00165
00166
00167 intr 0x20
00168 intr 0x21
00169 intr 0x22
00170 intr 0x23
00171 intr 0x24
00172 intr 0x25
00173 intr 0x26
00174 intr 0x27
00175 intr 0x28
00176 intr 0x29
00177 intr 0x2a
00178 intr 0x2b
00179 intr 0x2c
00180 intr 0x2d
00181 intr 0x2e
00182 intr 0x2f
00183
00184
00185
00186
00187
00188
00189