Changeset 410ed0d in mainline


Ignore:
Timestamp:
2006-10-27T20:39:59Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3e35fd7
Parents:
ec04b20
Message:

Fix the following bug:

Ticket #3 data_access_exception after killing task on sparc64

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/mm/tsb.c

    rec04b20 r410ed0d  
    5252 * @param as Address space.
    5353 * @param page First page to invalidate in TSB.
    54  * @param pages Number of pages to invalidate. Value of (count_t) -1 means the whole TSB.
     54 * @param pages Number of pages to invalidate.
     55 *              Value of (count_t) -1 means the whole TSB.
    5556 */
    5657void tsb_invalidate(as_t *as, uintptr_t page, count_t pages)
     
    6566       
    6667        for (i = 0; i < cnt; i++) {
    67                 as->arch.itsb[(i0 + i) & (ITSB_ENTRY_COUNT-1)].tag.invalid = 0;
    68                 as->arch.dtsb[(i0 + i) & (DTSB_ENTRY_COUNT-1)].tag.invalid = 0;
     68                as->arch.itsb[(i0 + i) & (ITSB_ENTRY_COUNT-1)].tag.invalid = true;
     69                as->arch.dtsb[(i0 + i) & (DTSB_ENTRY_COUNT-1)].tag.invalid = true;
    6970        }
    7071}
     
    8889         */
    8990
    90         tsb->tag.invalid = 1;   /* invalidate the entry (tag target has this set to 0) */
     91        tsb->tag.invalid = true;        /* invalidate the entry
     92                                         * (tag target has this
     93                                         * set to 0) */
    9194
    9295        write_barrier();
     
    99102        tsb->data.cp = t->c;
    100103        tsb->data.cv = t->c;
    101         tsb->data.p = t->k;     /* p as privileged */
     104        tsb->data.p = t->k;             /* p as privileged */
    102105        tsb->data.v = t->p;
    103106       
    104107        write_barrier();
    105108       
    106         tsb->tag.invalid = 0;   /* mark the entry as valid */
     109        tsb->tag.invalid = false;       /* mark the entry as valid */
    107110}
    108111
     
    126129         */
    127130
    128         tsb->tag.invalid = 1;   /* invalidate the entry (tag target has this set to 0) */
     131        tsb->tag.invalid = true;        /* invalidate the entry
     132                                         * (tag target has this
     133                                         * set to 0) */
    129134
    130135        write_barrier();
     
    137142        tsb->data.cp = t->c;
    138143        tsb->data.cv = t->c;
    139         tsb->data.p = t->k;     /* p as privileged */
     144        tsb->data.p = t->k;             /* p as privileged */
    140145        tsb->data.w = ro ? false : t->w;
    141146        tsb->data.v = t->p;
     
    143148        write_barrier();
    144149       
    145         tsb->tag.invalid = 0;   /* mark the entry as valid */
     150        tsb->tag.invalid = true;        /* mark the entry as valid */
    146151}
    147152
Note: See TracChangeset for help on using the changeset viewer.