Changeset 97d7b068 in rtems


Ignore:
Timestamp:
09/21/98 00:40:18 (25 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
7ddcfb8c
Parents:
75e44fa3
Message:

Update from Aleksey (Quality Quorum <qqi@…>) to pick up some
patches missing from 980911.

Location:
c/src/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/i386/shared/irq/idt.c

    r75e44fa3 r97d7b068  
    4646
    4747    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);
    4858 
     59    if(index >= limit) {
     60        return 0;
     61    }
     62
    4963    * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits |
    5064                              (idt_entry_tbl[index].high_offsets_bits << 16));
     
    6175    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    6276
    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) {
    6481      return 0;
    6582    }
     
    7491      return 0;
    7592    }
     93
    7694    _CPU_ISR_Disable(level);
    7795   
     
    95113    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    96114
    97     if (vector > limit) {
     115    /* Convert limit into number of entries */
     116    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
     117
     118    if (vector >= limit) {
    98119      return;
    99120    }
     
    115136    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    116137
    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;
    119143    }
    120144    raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex);
     
    122146    *irq = raw_irq_table [irq->idtIndex];
    123147   
    124     return 0;
     148    return 1;
    125149}
    126150
     
    133157    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    134158
    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    /*
    139166     * Check if handler passed is actually connected. If not issue an error.
    140167     * You must first get the current handler via i386_get_current_idt_entry
     
    144171     */
    145172    if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){
    146       return 1;
     173      return 0;
    147174    }
    148175    _CPU_ISR_Disable(level);
     
    153180   
    154181    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;
    159187}
    160188
     
    171199    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    172200
     201    /* Convert limit into number of entries */
     202    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
    173203     
    174204    if (config->idtSize != limit) {
    175       return 1;
     205      return 0;
    176206    }
    177207    /*
     
    199229    _CPU_ISR_Enable(level);
    200230
    201     return 0;
     231    return 1;
    202232}
    203233
     
    205235{
    206236  *config = local_settings;
    207   return 0;
     237  return 1;
    208238}
    209239
     
    223253
    224254    if (segment_selector > limit) {
    225       return 1;
     255      return 0;
    226256    }
    227257    /*
     
    250280
    251281    /*
    252      * Now, reload all segment registers so the limit takes effect.
     282    return 1;
    253283     */
    254284
     
    262292                  );
    263293   
    264     return 0;
    265 }
     294    return 1;
     295}
  • c/src/lib/libcpu/i386/cpu.c

    r75e44fa3 r97d7b068  
    4646
    4747    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);
    4858 
     59    if(index >= limit) {
     60        return 0;
     61    }
     62
    4963    * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits |
    5064                              (idt_entry_tbl[index].high_offsets_bits << 16));
     
    6175    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    6276
    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) {
    6481      return 0;
    6582    }
     
    7491      return 0;
    7592    }
     93
    7694    _CPU_ISR_Disable(level);
    7795   
     
    95113    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    96114
    97     if (vector > limit) {
     115    /* Convert limit into number of entries */
     116    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
     117
     118    if (vector >= limit) {
    98119      return;
    99120    }
     
    115136    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    116137
    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;
    119143    }
    120144    raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex);
     
    122146    *irq = raw_irq_table [irq->idtIndex];
    123147   
    124     return 0;
     148    return 1;
    125149}
    126150
     
    133157    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    134158
    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    /*
    139166     * Check if handler passed is actually connected. If not issue an error.
    140167     * You must first get the current handler via i386_get_current_idt_entry
     
    144171     */
    145172    if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){
    146       return 1;
     173      return 0;
    147174    }
    148175    _CPU_ISR_Disable(level);
     
    153180   
    154181    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;
    159187}
    160188
     
    171199    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    172200
     201    /* Convert limit into number of entries */
     202    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
    173203     
    174204    if (config->idtSize != limit) {
    175       return 1;
     205      return 0;
    176206    }
    177207    /*
     
    199229    _CPU_ISR_Enable(level);
    200230
    201     return 0;
     231    return 1;
    202232}
    203233
     
    205235{
    206236  *config = local_settings;
    207   return 0;
     237  return 1;
    208238}
    209239
     
    223253
    224254    if (segment_selector > limit) {
    225       return 1;
     255      return 0;
    226256    }
    227257    /*
     
    250280
    251281    /*
    252      * Now, reload all segment registers so the limit takes effect.
     282    return 1;
    253283     */
    254284
     
    262292                  );
    263293   
    264     return 0;
    265 }
     294    return 1;
     295}
  • c/src/lib/libcpu/i386/idt.c

    r75e44fa3 r97d7b068  
    4646
    4747    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);
    4858 
     59    if(index >= limit) {
     60        return 0;
     61    }
     62
    4963    * ((unsigned int*) &hdl) = (idt_entry_tbl[index].low_offsets_bits |
    5064                              (idt_entry_tbl[index].high_offsets_bits << 16));
     
    6175    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    6276
    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) {
    6481      return 0;
    6582    }
     
    7491      return 0;
    7592    }
     93
    7694    _CPU_ISR_Disable(level);
    7795   
     
    95113    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    96114
    97     if (vector > limit) {
     115    /* Convert limit into number of entries */
     116    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
     117
     118    if (vector >= limit) {
    98119      return;
    99120    }
     
    115136    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    116137
    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;
    119143    }
    120144    raw_irq_table [irq->idtIndex].hdl = get_hdl_from_vector(irq->idtIndex);
     
    122146    *irq = raw_irq_table [irq->idtIndex];
    123147   
    124     return 0;
     148    return 1;
    125149}
    126150
     
    133157    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    134158
    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    /*
    139166     * Check if handler passed is actually connected. If not issue an error.
    140167     * You must first get the current handler via i386_get_current_idt_entry
     
    144171     */
    145172    if (get_hdl_from_vector(irq->idtIndex) != irq->hdl){
    146       return 1;
     173      return 0;
    147174    }
    148175    _CPU_ISR_Disable(level);
     
    153180   
    154181    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;
    159187}
    160188
     
    171199    i386_get_info_from_IDTR (&idt_entry_tbl, &limit);
    172200
     201    /* Convert limit into number of entries */
     202    limit = (limit + 1) / sizeof(interrupt_gate_descriptor);
    173203     
    174204    if (config->idtSize != limit) {
    175       return 1;
     205      return 0;
    176206    }
    177207    /*
     
    199229    _CPU_ISR_Enable(level);
    200230
    201     return 0;
     231    return 1;
    202232}
    203233
     
    205235{
    206236  *config = local_settings;
    207   return 0;
     237  return 1;
    208238}
    209239
     
    223253
    224254    if (segment_selector > limit) {
    225       return 1;
     255      return 0;
    226256    }
    227257    /*
     
    250280
    251281    /*
    252      * Now, reload all segment registers so the limit takes effect.
     282    return 1;
    253283     */
    254284
     
    262292                  );
    263293   
    264     return 0;
    265 }
     294    return 1;
     295}
Note: See TracChangeset for help on using the changeset viewer.