Changeset 97d7b068 in rtems
- Timestamp:
- 09/21/98 00:40:18 (25 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 7ddcfb8c
- Parents:
- 75e44fa3
- Location:
- c/src/lib
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/i386/shared/irq/idt.c
r75e44fa3 r97d7b068 46 46 47 47 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 48 49 /* Convert limit into number of entries */ 50 limit = (limit + 1) >> 3; 51 52 if(index >= limit) { 53 return 0; 54 } 55 56 /* Convert limit into number of entries */ 57 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 48 58 59 if(index >= limit) { 60 return 0; 61 } 62 49 63 * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits | 50 64 (idt_entry_tbl[index].high_offsets_bits << 16)); … … 61 75 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 62 76 63 if (irq->idtIndex > limit) { 77 /* Convert limit into number of entries */ 78 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 79 80 if (irq->idtIndex >= limit) { 64 81 return 0; 65 82 } … … 74 91 return 0; 75 92 } 93 76 94 _CPU_ISR_Disable(level); 77 95 … … 95 113 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 96 114 97 if (vector > limit) { 115 /* Convert limit into number of entries */ 116 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 117 118 if (vector >= limit) { 98 119 return; 99 120 } … … 115 136 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 116 137 117 if (irq->idtIndex > limit) { 118 return 1; 138 /* Convert limit into number of entries */ 139 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 140 141 if (irq->idtIndex >= limit) { 142 return 0; 119 143 } 120 144 raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex); … … 122 146 *irq = raw_irq_table [irq->idtIndex]; 123 147 124 return 0;148 return 1; 125 149 } 126 150 … … 133 157 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 134 158 135 if (irq->idtIndex > limit) { 136 return 1; 137 } 138 /* 159 /* Convert limit into number of entries */ 160 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 161 162 if (irq->idtIndex >= limit) { 163 return 0; 164 } 165 /* 139 166 * Check if handler passed is actually connected. If not issue an error. 140 167 * You must first get the current handler via i386_get_current_idt_entry … … 144 171 */ 145 172 if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){ 146 return 1;173 return 0; 147 174 } 148 175 _CPU_ISR_Disable(level); … … 153 180 154 181 raw_irq_table[irq->idtIndex] = default_raw_irq_entry; 155 156 _CPU_ISR_Enable(level); 157 158 return 0; 182 raw_irq_table[irq->idtIndex].idtIndex = irq->idtIndex; 183 184 _CPU_ISR_Enable(level); 185 186 return 1; 159 187 } 160 188 … … 171 199 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 172 200 201 /* Convert limit into number of entries */ 202 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 173 203 174 204 if (config->idtSize != limit) { 175 return 1;205 return 0; 176 206 } 177 207 /* … … 199 229 _CPU_ISR_Enable(level); 200 230 201 return 0;231 return 1; 202 232 } 203 233 … … 205 235 { 206 236 *config = local_settings; 207 return 0;237 return 1; 208 238 } 209 239 … … 223 253 224 254 if (segment_selector > limit) { 225 return 1;255 return 0; 226 256 } 227 257 /* … … 250 280 251 281 /* 252 * Now, reload all segment registers so the limit takes effect.282 return 1; 253 283 */ 254 284 … … 262 292 ); 263 293 264 return 0;265 } 294 return 1; 295 } -
c/src/lib/libcpu/i386/cpu.c
r75e44fa3 r97d7b068 46 46 47 47 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 48 49 /* Convert limit into number of entries */ 50 limit = (limit + 1) >> 3; 51 52 if(index >= limit) { 53 return 0; 54 } 55 56 /* Convert limit into number of entries */ 57 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 48 58 59 if(index >= limit) { 60 return 0; 61 } 62 49 63 * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits | 50 64 (idt_entry_tbl[index].high_offsets_bits << 16)); … … 61 75 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 62 76 63 if (irq->idtIndex > limit) { 77 /* Convert limit into number of entries */ 78 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 79 80 if (irq->idtIndex >= limit) { 64 81 return 0; 65 82 } … … 74 91 return 0; 75 92 } 93 76 94 _CPU_ISR_Disable(level); 77 95 … … 95 113 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 96 114 97 if (vector > limit) { 115 /* Convert limit into number of entries */ 116 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 117 118 if (vector >= limit) { 98 119 return; 99 120 } … … 115 136 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 116 137 117 if (irq->idtIndex > limit) { 118 return 1; 138 /* Convert limit into number of entries */ 139 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 140 141 if (irq->idtIndex >= limit) { 142 return 0; 119 143 } 120 144 raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex); … … 122 146 *irq = raw_irq_table [irq->idtIndex]; 123 147 124 return 0;148 return 1; 125 149 } 126 150 … … 133 157 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 134 158 135 if (irq->idtIndex > limit) { 136 return 1; 137 } 138 /* 159 /* Convert limit into number of entries */ 160 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 161 162 if (irq->idtIndex >= limit) { 163 return 0; 164 } 165 /* 139 166 * Check if handler passed is actually connected. If not issue an error. 140 167 * You must first get the current handler via i386_get_current_idt_entry … … 144 171 */ 145 172 if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){ 146 return 1;173 return 0; 147 174 } 148 175 _CPU_ISR_Disable(level); … … 153 180 154 181 raw_irq_table[irq->idtIndex] = default_raw_irq_entry; 155 156 _CPU_ISR_Enable(level); 157 158 return 0; 182 raw_irq_table[irq->idtIndex].idtIndex = irq->idtIndex; 183 184 _CPU_ISR_Enable(level); 185 186 return 1; 159 187 } 160 188 … … 171 199 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 172 200 201 /* Convert limit into number of entries */ 202 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 173 203 174 204 if (config->idtSize != limit) { 175 return 1;205 return 0; 176 206 } 177 207 /* … … 199 229 _CPU_ISR_Enable(level); 200 230 201 return 0;231 return 1; 202 232 } 203 233 … … 205 235 { 206 236 *config = local_settings; 207 return 0;237 return 1; 208 238 } 209 239 … … 223 253 224 254 if (segment_selector > limit) { 225 return 1;255 return 0; 226 256 } 227 257 /* … … 250 280 251 281 /* 252 * Now, reload all segment registers so the limit takes effect.282 return 1; 253 283 */ 254 284 … … 262 292 ); 263 293 264 return 0;265 } 294 return 1; 295 } -
c/src/lib/libcpu/i386/idt.c
r75e44fa3 r97d7b068 46 46 47 47 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 48 49 /* Convert limit into number of entries */ 50 limit = (limit + 1) >> 3; 51 52 if(index >= limit) { 53 return 0; 54 } 55 56 /* Convert limit into number of entries */ 57 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 48 58 59 if(index >= limit) { 60 return 0; 61 } 62 49 63 * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits | 50 64 (idt_entry_tbl[index].high_offsets_bits << 16)); … … 61 75 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 62 76 63 if (irq->idtIndex > limit) { 77 /* Convert limit into number of entries */ 78 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 79 80 if (irq->idtIndex >= limit) { 64 81 return 0; 65 82 } … … 74 91 return 0; 75 92 } 93 76 94 _CPU_ISR_Disable(level); 77 95 … … 95 113 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 96 114 97 if (vector > limit) { 115 /* Convert limit into number of entries */ 116 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 117 118 if (vector >= limit) { 98 119 return; 99 120 } … … 115 136 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 116 137 117 if (irq->idtIndex > limit) { 118 return 1; 138 /* Convert limit into number of entries */ 139 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 140 141 if (irq->idtIndex >= limit) { 142 return 0; 119 143 } 120 144 raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex); … … 122 146 *irq = raw_irq_table [irq->idtIndex]; 123 147 124 return 0;148 return 1; 125 149 } 126 150 … … 133 157 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 134 158 135 if (irq->idtIndex > limit) { 136 return 1; 137 } 138 /* 159 /* Convert limit into number of entries */ 160 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 161 162 if (irq->idtIndex >= limit) { 163 return 0; 164 } 165 /* 139 166 * Check if handler passed is actually connected. If not issue an error. 140 167 * You must first get the current handler via i386_get_current_idt_entry … … 144 171 */ 145 172 if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){ 146 return 1;173 return 0; 147 174 } 148 175 _CPU_ISR_Disable(level); … … 153 180 154 181 raw_irq_table[irq->idtIndex] = default_raw_irq_entry; 155 156 _CPU_ISR_Enable(level); 157 158 return 0; 182 raw_irq_table[irq->idtIndex].idtIndex = irq->idtIndex; 183 184 _CPU_ISR_Enable(level); 185 186 return 1; 159 187 } 160 188 … … 171 199 i386_get_info_from_IDTR (&idt_entry_tbl, &limit); 172 200 201 /* Convert limit into number of entries */ 202 limit = (limit + 1) / sizeof(interrupt_gate_descriptor); 173 203 174 204 if (config->idtSize != limit) { 175 return 1;205 return 0; 176 206 } 177 207 /* … … 199 229 _CPU_ISR_Enable(level); 200 230 201 return 0;231 return 1; 202 232 } 203 233 … … 205 235 { 206 236 *config = local_settings; 207 return 0;237 return 1; 208 238 } 209 239 … … 223 253 224 254 if (segment_selector > limit) { 225 return 1;255 return 0; 226 256 } 227 257 /* … … 250 280 251 281 /* 252 * Now, reload all segment registers so the limit takes effect.282 return 1; 253 283 */ 254 284 … … 262 292 ); 263 293 264 return 0;265 } 294 return 1; 295 }
Note: See TracChangeset
for help on using the changeset viewer.