Changeset 0e30dec in mainline for arch/ia32/src/asm.S
- Timestamp:
- 2006-03-15T14:56:13Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b629483
- Parents:
- f8973c00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/src/asm.S
rf8973c00 r0e30dec 90 90 movl $0, %eax 91 91 .endif 92 andl $ERROR_WORD_INTERRUPT_LIST,%eax 92 andl $ERROR_WORD_INTERRUPT_LIST, %eax 93 movl (%esp), %eax 93 94 94 95 /* 95 * If this interrupt/exception 96 * If this interrupt/exception stores error word, 96 97 * we need to pop EAX. 97 98 * If this interrupt doesn't store error word, we emulate it 98 * for the sake of consistent pstate structure. In that case99 * for the sake of consistent istate structure. In that case 99 100 * we merely leave the EAX on the stack. 100 101 */ … … 103 104 /* 104 105 * This exception stores error word. 106 * Remove EAX from the stack. 105 107 */ 106 pop %eax 107 jmp 1f 108 addl $4, %esp 108 109 109 110 0: 110 /*111 * This interrupt doesn't store error word.112 * Just restore EAX without doing POP.113 */114 movl (%esp), %eax115 116 1:117 111 pusha 118 112 movl %esp, %ebp 119 113 push %ds 120 114 push %es 115 push %fs 116 push %gs 121 117 122 118 # we must fill the data segment registers … … 125 121 movw %ax,%es 126 122 127 movl $(\i),%edi128 123 pushl %ebp 129 pushl %edi124 pushl $(\i) 130 125 call exc_dispatch 131 126 addl $8,%esp 132 127 128 pop %gs 129 pop %fs 133 130 pop %es 134 131 pop %ds … … 137 134 pushfl 138 135 pop %eax 139 and $0x FFFFBFFF,%eax136 and $0xffffbfff,%eax 140 137 push %eax 141 138 popfl 142 139 143 140 popa 144 add $4,%esp # Skip error word, whether real or fake.141 addl $4,%esp # Skip error word, whether real or fake. 145 142 iret 146 143
Note:
See TracChangeset
for help on using the changeset viewer.