Changeset 5194a28 in rtems


Ignore:
Timestamp:
Dec 6, 2004, 8:29:51 PM (16 years ago)
Author:
Greg Menke <gregory.menke@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
f44f0c7
Parents:
8fa65f5
Message:

PR 730

  • cpu_asm.S: Collected PR 601 changes for commit to cvshead for rtems-4.7
Location:
cpukit
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libnetworking/netinet/tcp_input.c

    r8fa65f5 r5194a28  
    202202        tcpstat.tcps_rcvoopack++;
    203203        tcpstat.tcps_rcvoobyte += ti->ti_len;
    204 #if (defined(__GNUC__) && defined(__arm__))
     204#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    205205    STR32_UNALGN(ti,m);
    206206#else
     
    218218                        q->ti_seq += i;
    219219                        q->ti_len -= i;
    220 #if (defined(__GNUC__) && defined(__arm__))
     220#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    221221            LD32_UNALGN(q,m);
    222222            m_adj(m, i);
     
    227227                }
    228228                q = (struct tcpiphdr *)q->ti_next;
    229 #if (defined(__GNUC__) && defined(__arm__))
     229#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    230230        LD32_UNALGN((struct tcpiphdr *)q->ti_prev,m);
    231231#else
     
    255255                flags = ti->ti_flags & TH_FIN;
    256256                remque(ti);
    257 #if (defined(__GNUC__) && defined(__arm__))
     257#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    258258        LD32_UNALGN(ti,m);
    259259#else
  • cpukit/libnetworking/netinet/tcp_subr.c

    r8fa65f5 r5194a28  
    400400        while (t != (struct tcpiphdr *)tp) {
    401401                t = (struct tcpiphdr *)t->ti_next;
    402 #if (defined(__GNUC__) && defined(__arm__))
     402#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    403403        LD32_UNALGN((struct tcpiphdr *)t->ti_prev,m);
    404404#else
  • cpukit/libnetworking/netinet/tcp_var.h

    r8fa65f5 r5194a28  
    226226 * tcpcb) are overlayed with an mbuf pointer.
    227227 */
    228 #if (defined(__GNUC__) && defined(__arm__))
     228#if (defined(__GNUC__) && (defined(__arm__) || defined(__mips__)))
    229229#define STR32_UNALGN(ti,m) \
    230230        (ti)->ti_sport = (unsigned short)(((unsigned int) m & 0xffff0000) >> 16); \
  • cpukit/libnetworking/sys/queue.h

    r8fa65f5 r5194a28  
    569569
    570570struct quehead {
    571 #if defined(__arm__)
     571#if (defined(__arm__) || defined(__mips__))
    572572    struct quehead *qh_link  __attribute__((packed));
    573573    struct quehead *qh_rlink __attribute__((packed));
  • cpukit/score/cpu/mips/ChangeLog

    r8fa65f5 r5194a28  
    1 2004-11-21      Ralf Corsepius <ralf.corsepius@rtems.org>
    2 
    3         * rtems/score/types.h: Use __rtems_score_types_h as preprocessor
    4         guard.
    5 
    6 2004-11-21      Ralf Corsepius <ralf.corsepius@rtems.org>
    7 
    8         * asm.h: Add doxygen preamble.
    9 
    10 2004-10-02      Ralf Corsepius <ralf_corsepius@rtems.org>
    11 
    12         * rtems/score/cpu.h: Add doxygen preamble.
    13         * rtems/score/mips.h: Add doxygen preamble.
    14         * rtems/score/types.h: Add doxygen preamble.
    15 
    16 2004-09-29      Joel Sherrill <joel@OARcorp.com>
    17 
    18         * rtems/score/cpu.h: i960 obsoleted and all references removed.
    19 
    20 2004-07-25      Joel Sherrill <joel@OARcorp.com>
    21 
    22         * cpu_asm.S: Remove use of C++ style comments and make this compile
    23         again.
    24 
    25 2004-04-14      Ralf Corsepius <ralf_corsepius@rtems.org>
    26 
    27         PR 605/bsps
    28         * cpu.c: Remove further c++ style comments having been missed in
    29         previous patch. Remove printf's entirely.
     12004-12-02      Greg Menke <gregory.menke@gsfc.nasa.gov>
     2        PR 730
     3        * cpu_asm.S: Collected PR 601 changes for commit to cvshead
     4        for rtems-4.7
    305
    3162004-04-09      Joel Sherrill <joel@OARcorp.com>
     
    349        * cpu.c: Do not use C++ style comments.
    3510
    36 2004-04-06      Ralf Corsepius <ralf_corsepius@rtems.org>
    37 
    38         * configure.ac: Remove (Merged into $(top_srcdir)/configure.ac).
    39         * Makefile.am: Don't include multilib.am.
    40         Reflect merging configure.ac into $(top_srcdir)/configure.ac.
     112004-04-07      Greg Menke <gregory.menke@gsfc.nasa.gov>
     12        PR 601
     13        * cpu_asm.S: Added __mips==32 support for R4000 processors running
     14        32 bit code.  Fixed #define problems that caused fpu code to
     15        always be included even when no fpu is present.
    4116
    42172004-04-03      Art Ferrer <arturo.b.ferrer@nasa.gov>
     
    4621        status/control register on context switches. Missing this register
    4722        was causing intermittent floating point errors.
    48 
    49 2004-04-02      Ralf Corsepius <ralf_corsepius@rtems.org>
    50 
    51         * Makefile.am: Install iregdefs.h and idtcpu.h to
    52         $(includedir)/rtems/mips.
    53         * cpu_asm.S: Include <rtems/mips/iregdef.h> instead of <iregdef.h>.
    54         * rtems/score/mips.h, cpu_asm.S: Include <rtems/mips/idtcpu.h>
    55         instead of <idtcpu.h>.
    56 
    57 2004-04-01      Ralf Corsepius <ralf_corsepius@rtems.org>
    58 
    59         * Makefile.am: Install asm.h to $(includedir)/rtems.
    60 
    61 2004-04-01      Ralf Corsepius <ralf_corsepius@rtems.org>
    62 
    63         * cpu_asm.S: Include <rtems/asm.h> instead of <asm.h>.
    64 
    65 2004-03-30      Ralf Corsepius <ralf_corsepius@rtems.org>
    66 
    67         * cpu.c, rtems/score/cpu.h: Convert to using c99 fixed size types.
    68 
    69 2004-03-29      Ralf Corsepius <ralf_corsepius@rtems.org>
    70 
    71         * configure.ac: RTEMS_TOP([../../../..]).
    72 
    73 2004-01-21      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    74 
    75         * configure.ac: Move RTEMS_TOP one subdir down.
    76 
    77 2004-01-19      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    78 
    79         * Makefile.am: Add PREINSTALL_DIRS.
    80 
    81 2004-01-14      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    82 
    83         * Makefile.am: Re-add dirstamps to PREINSTALL_FILES.
    84         Add PREINSTALL_FILES to CLEANFILES.
    85 
    86 2004-01-12      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    87 
    88         * configure.ac: Requires automake >= 1.8.1.
    89 
    90 2004-01-11      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    91 
    92         * Makefile.am: Include compile.am, again.
    93 
    94 2004-01-11      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    95 
    96         * Makefile.am: Convert to using automake compilation rules.
    97 
    98 2004-01-07      Joel Sherrill <joel@OARcorp.com>
    99 
    100         * rtems/score/mips.h: Removed junk revision line.
    101 
    102 2003-12-12      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    103 
    104         * Makefile.am: Use mkdir_p. Remove dirs from PREINSTALL_FILES.
    105 
    106 2003-12-12      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    107 
    108         * configure.ac: Require automake >= 1.8, autoconf >= 2.59.
    109 
    110 2003-12-01      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    111 
    112         * Makefile.am: Remove TMPINSTALL_FILES.
    113 
    114 2003-11-30      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    115 
    116         * Makefile.am: Add $(dirstamp) to preinstallation rules.
    117 
    118 2003-11-23      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    119 
    120         * Makefile.am: Don't use gmake rules for preinstallation.
    121 
    122 2003-10-21      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    123 
    124         * configure.ac: Remove RTEMS_CANONICAL_HOST.
    125 
    126 2003-10-21      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    127 
    128         * configure.ac: Remove RTEMS_CHECK_CPU.
    129 
    130 2003-09-26      Joel Sherrill <joel@OARcorp.com>
    131 
    132         * rtems/score/cpu.h: Obsoleting HP PA-RISC port and removing all
    133         references.
    13423
    135242003-09-04      Joel Sherrill <joel@OARcorp.com>
  • cpukit/score/cpu/mips/asm.h

    r8fa65f5 r5194a28  
    158158
    159159#endif
     160/* end of include file */
     161
  • cpukit/score/cpu/mips/cpu.c

    r8fa65f5 r5194a28  
    100100  mips_get_sr(sr);
    101101
    102 #if __mips == 3
    103 /* EXL bit and shift down hardware ints into bits 1 thru 6 */
    104   sr = ((sr & SR_EXL) >> 1) | ((sr & 0xfc00) >> 9);
     102  /* printf("current sr=%08X, ",sr); */
     103
     104#if (__mips == 3) || (__mips == 32)
     105/* IE bit and shift down hardware ints into bits 1 thru 6 */
     106  sr = (sr & SR_IE) | ((sr & 0xfc00) >> 9);
    105107
    106108#elif __mips == 1
     
    132134  mips_get_sr(sr);
    133135
    134 #if __mips == 3
     136#if (__mips == 3) || (__mips == 32)
    135137  mips_set_sr( (sr & ~SR_IE) );                 /* first disable ie bit (recommended) */
    136138
    137   srbits = sr & ~(0xfc00 | SR_EXL | SR_IE);
    138 
    139   sr = srbits | ((new_level==0)? (0xfc00 | SR_EXL | SR_IE): \
     139   srbits = sr & ~(0xfc00 | SR_IE);
     140
     141   sr = srbits | ((new_level==0)? (0xfc00 | SR_IE): \
    140142                 (((new_level<<9) & 0xfc00) | \
    141                   (new_level & 1)?(SR_EXL | SR_IE):0));
     143                   ((new_level & 1)?SR_IE:0)));
    142144/*
    143145  if ( (new_level & SR_EXL) == (sr & SR_EXL) )
     
    264266void _CPU_Thread_Idle_body( void )
    265267{
    266 #if __mips == 3
     268#if (__mips == 3) || (__mips == 32)
    267269   for( ; ; )
    268270     asm volatile("wait"); /* use wait to enter low power mode */
  • cpukit/score/cpu/mips/cpu_asm.S

    r8fa65f5 r5194a28  
    3636 *          register to fix intermittent FP error encountered on ST5 mission
    3737 *          implementation on Mongoose V processor.
     38 *    2004: April 7, Greg Menke <gregory.menke@gsfc.nasa.gov> Added __mips==32
     39 *          support for R4000 processors running 32 bit code.  Fixed #define
     40 *          problems that caused fpu code to always be included even when no
     41 *          fpu is present.
    3842 * 
    3943 *  COPYRIGHT (c) 1989-2002.
     
    5458#include <rtems/score/cpu.h>
    5559
     60#if TRUE
     61#else
     62#error TRUE is not true
     63#endif
     64#if FALSE
     65#error FALSE is not false
     66#else
     67#endif
     68
     69/*             
     70#if ( CPU_HARDWARE_FP == TRUE )
     71#warning CPU_HARDWARE_FP == TRUE
     72#else
     73#warning CPU_HARDWARE_FP != TRUE
     74#endif
     75*/
     76       
    5677               
    5778/* enable debugging shadow writes to misc ram, this is a vestigal
     
    7192#if __mips == 3
    7293/* 64 bit register operations */
    73 #define NOP     
     94#define NOP     nop
     95/*
    7496#define ADD     dadd
     97#define MFCO    dmfc0
     98#define MTCO    dmtc0
     99*/
     100#define ADD     add     
     101#define MFCO    mfc0
     102#define MTCO    mtc0
    75103#define STREG   sd
    76104#define LDREG   ld
    77 #define MFCO    dmfc0
    78 #define MTCO    dmtc0
    79105#define ADDU    addu
    80106#define ADDIU   addiu
     
    86112/* XXX if we don't always want 64 bit register ops, then another ifdef */
    87113
    88 #elif __mips == 1
     114#elif (__mips == 1 ) || (__mips == 32)
    89115/* 32 bit register operations*/
    90116#define NOP     nop
     
    386412
    387413        MFC0    t0,C0_SR
    388 #if __mips == 3
    389         li      t1,SR_EXL | SR_IE
     414#if (__mips == 3) || (__mips == 32)
     415        li      t1,SR_IE
    390416#elif __mips == 1
    391417        li      t1,SR_IEC
     
    451477        LDREG t0, C0_SR_OFFSET*R_SZ(a1)
    452478       
     479/*      NOP */
     480/*#if __mips == 3 */
     481/*        andi  t0,SR_EXL */
     482/*        bnez  t0,_CPU_Context_1 */   /* set exception level from restore context */
     483/*        li    t0,~SR_EXL */
     484/*        MFC0  t1,C0_SR */
     485/*        NOP */
     486/*        and   t1,t0 */
     487/*        MTC0  t1,C0_SR */
     488/* */
     489/*#elif __mips == 1 */
     490/* */
     491/*        andi  t0,(SR_INTERRUPT_ENABLE_BITS) */ /* we know 0 disabled */
     492/*        beq   t0,$0,_CPU_Context_1  */         /* set level from restore context */
     493/*        MFC0  t0,C0_SR */
     494/*        NOP */
     495/*        or    t0,(SR_INTERRUPT_ENABLE_BITS) */ /* new_sr = old sr with enabled  */
     496/*        MTC0  t0,C0_SR */                     /* set with enabled */
     497/*        NOP */
     498
    453499
    454500/*
    455  * Incorporate the incoming task's FP coprocessor state and interrupt
    456  * mask/enable into the status register.  We jump thru the requisite hoops
    457  * to ensure we maintain all other SR bits as global values.
    458  *
    459  * Get the task's FPU enable, int mask & int enable bits.  Although we keep the
    460  * software int enables on a per-task basis, the rtems_task_create
    461  * Interrupt Level & int level manipulation functions cannot enable/disable
    462  * them, so they are automatically enabled for all tasks.  To turn them off,
    463  * a task must itself manipulate the SR register. 
    464  *
    465  * Although something of a hack on this processor, we treat the SR register
    466  * int enables as the RTEMS interrupt level.  We use the int level
    467  * value as a bitmask, not as any sort of greater than/less than metric.
    468  * Manipulation of a task's interrupt level directly corresponds to manipulation
    469  * of that task's SR bits, as seen in cpu.c
    470  *
    471  * Note, interrupts are disabled before context is saved, though the task's
    472  * interrupt enable state is recorded.  The task swapping in will apply its
    473  * specific SR bits, including interrupt enable.  If further task-specific
    474  * SR bits are arranged, it is this code, the cpu.c interrupt level stuff and
    475  * cpu.h task initialization code that will be affected. 
    476  */
     501** Incorporate the incoming task's FP coprocessor state and interrupt mask/enable
     502** into the status register.  We jump thru the requisite hoops to ensure we
     503** maintain all other SR bits as global values.
     504**
     505** Get the task's FPU enable, int mask & int enable bits.  Although we keep the
     506** software int enables on a per-task basis, the rtems_task_create
     507** Interrupt Level & int level manipulation functions cannot enable/disable them,
     508** so they are automatically enabled for all tasks.  To turn them off, a task 
     509** must itself manipulate the SR register. 
     510**
     511** Although something of a hack on this processor, we treat the SR register
     512** int enables as the RTEMS interrupt level.  We use the int level
     513** value as a bitmask, not as any sort of greater than/less than metric.
     514** Manipulation of a task's interrupt level corresponds directly to manipulation
     515** of that task's SR bits, as seen in cpu.c
     516**
     517** Note, interrupts are disabled before context is saved, though the task's
     518** interrupt enable state is recorded.  The task swapping in will apply its
     519** specific SR bits, including interrupt enable.  If further task-specific
     520** SR bits are arranged, it is this code, the cpu.c interrupt level stuff and
     521** cpu.h task initialization code that will be affected. 
     522*/
    477523
    478524        li      t2,SR_CU1
     
    480526
    481527        /* int enable bits */
    482 #if __mips == 3
    483         or      t2,SR_EXL + SR_IE
     528#if (__mips == 3) || (__mips == 32)
     529        /*
     530        ** Save IE
     531        */
     532        or      t2, SR_IE
    484533#elif __mips == 1
    485534        /*
     
    488537        ** interrupt service.  The int enables nest, but not beyond
    489538        ** previous and old because of the dispatch interlock seen
    490         ** in the interrupt processing code
     539        ** in the interrupt processing code.
    491540        */
    492541        or      t2,SR_IEC + SR_IEP + SR_IEO
     
    496545        MFC0    t1,C0_SR        /* grab the current SR */
    497546        not     t2             
    498         and     t1,t2           /* mask off the old task's bits */
     547        and     t1,t2           /* mask off the old task's per-task bits */
    499548        or      t1,t0           /* or in the new task's bits */
    500549        MTC0    t1,C0_SR        /* and load the new SR */
     
    688737       
    689738#if ( CPU_HARDWARE_FP == TRUE )
    690         MFC0     t0,C0_SR                 /* FPU is enabled, save state */
     739        MFC0     t0,C0_SR                 /* we have a FPU, save state if enabled */
    691740        NOP
    692741        srl      t0,t0,16
     
    712761       
    713762        /*
    714         ** note, if the exception vector returns, rely on it to have
     763        ** Note, if the exception vector returns, rely on it to have
    715764        ** adjusted EPC so we will return to some correct address.  If
    716765        ** this is not done, we might get stuck in an infinite loop because
     
    780829               
    781830#if ( CPU_HARDWARE_FP == TRUE )
    782         MFC0     t0,C0_SR               /* FPU is enabled, restore state */
     831        MFC0     t0,C0_SR               /* FPU is present, restore state if enabled */
    783832        NOP
    784833        srl      t0,t0,16
     
    936985
    937986        MFC0    t0, C0_SR
    938 #if __mips == 3
    939         li      t1,SR_EXL | SR_IE
    940 #elif __mips == 1
     987#if __mips == 1
     988       
    941989        li      t1,SR_IEC
    942 #endif
    943990        or      t0, t1
     991       
     992#elif (__mips == 3) || (__mips == 32)
     993       
     994        /*
     995        ** clear XL and set IE so we can get interrupts.
     996        */
     997        li      t1, SR_EXL
     998        not     t1
     999        and     t0,t1
     1000        or      t0, SR_IE
     1001       
     1002#endif
    9441003        MTC0    t0, C0_SR
    9451004        NOP
     
    9521011        NOP
    9531012
    954         /* and make sure its clear in case we didn't dispatch.  if we did, its
    955         ** already cleared */
     1013        /*
     1014        ** And make sure its clear in case we didn't dispatch.  if we did, its
     1015        ** already cleared
     1016        */
    9561017        la      t0,__exceptionStackFrame
    9571018        STREG   zero,(t0)
     
    9601021/*
    9611022** turn interrupts back off while we restore context so
    962 ** a badly timed interrupt won't accidentally mess things up
     1023** a badly timed interrupt won't mess things up
    9631024*/
    9641025        MFC0    t0, C0_SR
    965 #if __mips == 3
    966         li      t1,SR_EXL | SR_IE
    967 #elif __mips == 1
     1026
     1027#if __mips == 1
     1028 
    9681029        /* ints off, current & prev kernel mode on (kernel mode enabled is bit clear..argh!) */
    9691030        li      t1,SR_IEC | SR_KUP | SR_KUC     
    970 #endif
    9711031        not     t1
    9721032        and     t0, t1
    973 
    974 #if __mips == 1
    975         /* disabled 7/29, gregm, this tasks context was saved previously in an interrupt,
    976         ** so we'll just restore the task's previous interrupt enables.
    977 
    978         **
    979         ** make sure previous int enable is on  because we're returning from an interrupt
    980         ** which means interrupts have to be enabled
    981        
    982         li      t1,SR_IEP
    983         or      t0,t1
    984         */
    985 #endif
    9861033        MTC0    t0, C0_SR
    987         NOP
     1034        NOP
     1035
     1036 #elif (__mips == 3) || (__mips == 32)
     1037
     1038        move    t2, t0
     1039       
     1040  /* make sure XL & IE are clear so ints are disabled & we can update EPC for the return */
     1041        li   t1,SR_EXL | SR_IE
     1042        not  t1
     1043        and  t0,t1
     1044        MTC0 t0,C0_SR
     1045        NOP
     1046       
     1047        /* store new EPC value, which we can do since XL=0 */
     1048        LDREG   t0, R_EPC*R_SZ(sp)
     1049        NOP
     1050        MTC0    t0, C0_EPC
     1051        NOP
     1052       
     1053        /* apply task's SR with XL set so the eret will return properly */
     1054        or      t2, SR_EXL
     1055        MTC0    t2, C0_SR
     1056        NOP
     1057#endif
     1058 
     1059 
     1060 
     1061 
     1062 
    9881063       
    9891064#ifdef INSTRUMENT_EXECUTING_THREAD
     
    10421117        LDREG v0, R_V0*R_SZ(sp)
    10431118       
    1044         LDREG     k1, R_EPC*R_SZ(sp)
    1045        
     1119#if __mips == 1
     1120        LDREG     k1, R_EPC*R_SZ(sp)
     1121#endif
     1122               
    10461123        .set noat
    10471124        LDREG     AT, R_AT*R_SZ(sp)
     
    10491126
    10501127        ADDIU     sp,sp,EXCP_STACK_SIZE
    1051         j         k1
    1052         rfe
     1128
     1129#if (__mips == 3) || (__mips == 32)
     1130        eret
     1131#elif __mips == 1
     1132        j         k1
     1133        rfe
     1134#endif
    10531135        NOP
    10541136
     
    10671149       .set    reorder
    10681150ENDFRAME(mips_break)
     1151
  • cpukit/score/cpu/mips/idtcpu.h

    r8fa65f5 r5194a28  
    6161#define DB_VEC  (K0BASE+0x40)           /* debug vector */
    6262#define E_VEC   (K0BASE+0x80)           /* exception vector */
     63#elif  __mips == 32
     64#define T_VEC   (K0BASE+0x000)          /* tlbmiss vector */
     65#define X_VEC   (K0BASE+0x080)          /* xtlbmiss vector */
     66#define C_VEC   (K0BASE+0x100)          /* cache error vector */
     67#define E_VEC   (K0BASE+0x180)          /* exception vector */
    6368#elif  __mips == 3
    6469#define T_VEC   (K0BASE+0x000)          /* tlbmiss vector */
     
    9297#define MAXCACHE        0x40000         /* 256*1024   256k */   
    9398
    94 #if  __mips == 3
     99#if  __mips == 32
    95100/* R4000 configuration register definitions */
    96101#define CFG_CM          0x80000000      /* Master-Checker mode */
     
    186191#endif
    187192
     193#if  __mips == 3
     194/* R4000 configuration register definitions */
     195#define CFG_CM          0x80000000      /* Master-Checker mode */
     196#define CFG_ECMASK      0x70000000      /* System Clock Ratio */
     197#define CFG_ECBY2       0x00000000      /* divide by 2 */
     198#define CFG_ECBY3       0x10000000      /* divide by 3 */
     199#define CFG_ECBY4       0x20000000      /* divide by 4 */
     200#define CFG_EPMASK      0x0f000000      /* Transmit data pattern */
     201#define CFG_EPD         0x00000000      /* D */
     202#define CFG_EPDDX       0x01000000      /* DDX */
     203#define CFG_EPDDXX      0x02000000      /* DDXX */
     204#define CFG_EPDXDX      0x03000000      /* DXDX */
     205#define CFG_EPDDXXX     0x04000000      /* DDXXX */
     206#define CFG_EPDDXXXX    0x05000000      /* DDXXXX */
     207#define CFG_EPDXXDXX    0x06000000      /* DXXDXX */
     208#define CFG_EPDDXXXXX   0x07000000      /* DDXXXXX */
     209#define CFG_EPDXXXDXXX  0x08000000      /* DXXXDXXX */
     210#define CFG_SBMASK      0x00c00000      /* Secondary cache block size */
     211#define CFG_SBSHIFT     22
     212#define CFG_SB4         0x00000000      /* 4 words */
     213#define CFG_SB8         0x00400000      /* 8 words */
     214#define CFG_SB16        0x00800000      /* 16 words */
     215#define CFG_SB32        0x00c00000      /* 32 words */
     216#define CFG_SS          0x00200000      /* Split secondary cache */
     217#define CFG_SW          0x00100000      /* Secondary cache port width */
     218#define CFG_EWMASK      0x000c0000      /* System port width */
     219#define CFG_EWSHIFT     18
     220#define CFG_EW64        0x00000000      /* 64 bit */
     221#define CFG_EW32        0x00010000      /* 32 bit */
     222#define CFG_SC          0x00020000      /* Secondary cache absent */
     223#define CFG_SM          0x00010000      /* Dirty Shared mode disabled */
     224#define CFG_BE          0x00008000      /* Big Endian */
     225#define CFG_EM          0x00004000      /* ECC mode enable */
     226#define CFG_EB          0x00002000      /* Block ordering */
     227#define CFG_ICMASK      0x00000e00      /* Instruction cache size */
     228#define CFG_ICSHIFT     9
     229#define CFG_DCMASK      0x000001c0      /* Data cache size */
     230#define CFG_DCSHIFT     6
     231#define CFG_IB          0x00000020      /* Instruction cache block size */
     232#define CFG_DB          0x00000010      /* Data cache block size */
     233#define CFG_CU          0x00000008      /* Update on Store Conditional */
     234#define CFG_K0MASK      0x00000007      /* KSEG0 coherency algorithm */
     235
     236/*
     237 * R4000 primary cache mode
     238 */
     239#define CFG_C_UNCACHED          2
     240#define CFG_C_NONCOHERENT       3
     241#define CFG_C_COHERENTXCL       4
     242#define CFG_C_COHERENTXCLW      5
     243#define CFG_C_COHERENTUPD       6
     244
     245/*
     246 * R4000 cache operations (should be in assembler...?)
     247 */
     248#define Index_Invalidate_I               0x0         /* 0       0 */
     249#define Index_Writeback_Inv_D            0x1         /* 0       1 */
     250#define Index_Invalidate_SI              0x2         /* 0       2 */
     251#define Index_Writeback_Inv_SD           0x3         /* 0       3 */
     252#define Index_Load_Tag_I                 0x4         /* 1       0 */
     253#define Index_Load_Tag_D                 0x5         /* 1       1 */
     254#define Index_Load_Tag_SI                0x6         /* 1       2 */
     255#define Index_Load_Tag_SD                0x7         /* 1       3 */
     256#define Index_Store_Tag_I                0x8         /* 2       0 */
     257#define Index_Store_Tag_D                0x9         /* 2       1 */
     258#define Index_Store_Tag_SI               0xA         /* 2       2 */
     259#define Index_Store_Tag_SD               0xB         /* 2       3 */
     260#define Create_Dirty_Exc_D               0xD         /* 3       1 */
     261#define Create_Dirty_Exc_SD              0xF         /* 3       3 */
     262#define Hit_Invalidate_I                 0x10        /* 4       0 */
     263#define Hit_Invalidate_D                 0x11        /* 4       1 */
     264#define Hit_Invalidate_SI                0x12        /* 4       2 */
     265#define Hit_Invalidate_SD                0x13        /* 4       3 */
     266#define Hit_Writeback_Inv_D              0x15        /* 5       1 */
     267#define Hit_Writeback_Inv_SD             0x17        /* 5       3 */
     268#define Fill_I                           0x14        /* 5       0 */
     269#define Hit_Writeback_D                  0x19        /* 6       1 */
     270#define Hit_Writeback_SD                 0x1B        /* 6       3 */
     271#define Hit_Writeback_I                  0x18        /* 6       0 */
     272#define Hit_Set_Virtual_SI               0x1E        /* 7       2 */
     273#define Hit_Set_Virtual_SD               0x1F        /* 7       3 */
     274
     275#ifndef WAIT
     276#define WAIT .word 0x42000020
     277#endif /* WAIT */
     278
     279/* Disabled by joel -- horrible overload of common word.
     280#ifndef wait
     281#define wait .word 0x42000020
     282#endif wait
     283*/
     284
     285#endif
     286
    188287/*
    189288** TLB resource defines
     
    221320#if  __mips == 3
    222321#define N_TLB_ENTRIES   48
     322
     323#define TLBHI_VPN2MASK  0xffffe000
     324#define TLBHI_PIDMASK   0x000000ff
     325#define TLBHI_NPID      256
     326
     327#define TLBLO_PFNMASK   0x3fffffc0
     328#define TLBLO_PFNSHIFT  6
     329#define TLBLO_D         0x00000004      /* writeable */
     330#define TLBLO_V         0x00000002      /* valid bit */
     331#define TLBLO_G         0x00000001      /* global access bit */
     332#define TLBLO_CMASK     0x00000038      /* cache algorithm mask */
     333#define TLBLO_CSHIFT    3
     334
     335#define TLBLO_UNCACHED          (CFG_C_UNCACHED<<TLBLO_CSHIFT)
     336#define TLBLO_NONCOHERENT       (CFG_C_NONCOHERENT<<TLBLO_CSHIFT)
     337#define TLBLO_COHERENTXCL       (CFG_C_COHERENTXCL<<TLBLO_CSHIFT)
     338#define TLBLO_COHERENTXCLW      (CFG_C_COHERENTXCLW<<TLBLO_CSHIFT)
     339#define TLBLO_COHERENTUPD       (CFG_C_COHERENTUPD<<TLBLO_CSHIFT)
     340
     341#define TLBINX_PROBE    0x80000000
     342#define TLBINX_INXMASK  0x0000003f
     343
     344#define TLBRAND_RANDMASK        0x0000003f
     345
     346#define TLBCTXT_BASEMASK        0xff800000
     347#define TLBCTXT_BASESHIFT       23
     348
     349#define TLBCTXT_VPN2MASK        0x007ffff0
     350#define TLBCTXT_VPN2SHIFT       4
     351
     352#define TLBPGMASK_MASK          0x01ffe000
     353#endif
     354
     355#if  __mips == 32
     356#define N_TLB_ENTRIES   16
    223357
    224358#define TLBHI_VPN2MASK  0xffffe000
     
    384518#endif
    385519
    386 
     520#if  __mips == 32
     521#define SR_CUMASK       0xf0000000      /* coproc usable bits */
     522#define SR_CU3          0x80000000      /* Coprocessor 3 usable */
     523#define SR_CU2          0x40000000      /* Coprocessor 2 usable */
     524#define SR_CU1          0x20000000      /* Coprocessor 1 usable */
     525#define SR_CU0          0x10000000      /* Coprocessor 0 usable */
     526
     527#define SR_RP           0x08000000      /* Reduced power operation */
     528#define SR_FR           0x04000000      /* Additional floating point registers */
     529#define SR_RE           0x02000000      /* Reverse endian in user mode */
     530
     531#define SR_BEV          0x00400000      /* Use boot exception vectors */
     532#define SR_TS           0x00200000      /* TLB shutdown */
     533#define SR_SR           0x00100000      /* Soft reset */
     534#define SR_CH           0x00040000      /* Cache hit */
     535#define SR_CE           0x00020000      /* Use cache ECC  */
     536#define SR_DE           0x00010000      /* Disable cache exceptions */
     537
     538/*
     539**      status register interrupt masks and bits
     540*/
     541
     542#define SR_IMASK        0x0000ff00      /* Interrupt mask */
     543#define SR_IMASK8       0x00000000      /* mask level 8 */
     544#define SR_IMASK7       0x00008000      /* mask level 7 */
     545#define SR_IMASK6       0x0000c000      /* mask level 6 */
     546#define SR_IMASK5       0x0000e000      /* mask level 5 */
     547#define SR_IMASK4       0x0000f000      /* mask level 4 */
     548#define SR_IMASK3       0x0000f800      /* mask level 3 */
     549#define SR_IMASK2       0x0000fc00      /* mask level 2 */
     550#define SR_IMASK1       0x0000fe00      /* mask level 1 */
     551#define SR_IMASK0       0x0000ff00      /* mask level 0 */
     552
     553#define SR_IMASKSHIFT   8
     554
     555#define SR_IBIT8        0x00008000      /* bit level 8 */
     556#define SR_IBIT7        0x00004000      /* bit level 7 */
     557#define SR_IBIT6        0x00002000      /* bit level 6 */
     558#define SR_IBIT5        0x00001000      /* bit level 5 */
     559#define SR_IBIT4        0x00000800      /* bit level 4 */
     560#define SR_IBIT3        0x00000400      /* bit level 3 */
     561#define SR_IBIT2        0x00000200      /* bit level 2 */
     562#define SR_IBIT1        0x00000100      /* bit level 1 */
     563
     564#define SR_KSMASK       0x00000018      /* Kernel mode mask */
     565#define SR_KSUSER       0x00000010      /* User mode */
     566#define SR_KSSUPER      0x00000008      /* Supervisor mode */
     567#define SR_KSKERNEL     0x00000000      /* Kernel mode */
     568#define SR_ERL          0x00000004      /* Error level */
     569#define SR_EXL          0x00000002      /* Exception level */
     570#define SR_IE           0x00000001      /* Interrupts enabled */
     571#endif
    387572
    388573/*
     
    415600#endif
    416601
     602#if  __mips == 32
     603#define C0_TLBLO0       $2              /* tlb entry low 0 */
     604#define C0_TLBLO1       $3              /* tlb entry low 1 */
     605#endif
     606
     607
    417608#define C0_CTXT         $4              /* tlb context */
    418609
     
    422613#endif
    423614
     615#if  __mips == 32
     616#define C0_PAGEMASK     $5              /* tlb page mask */
     617#define C0_WIRED        $6              /* number of wired tlb entries */
     618#endif
     619
    424620#if  __mips == 1
    425621#define C0_TAR          $6
     
    431627#define C0_COUNT        $9              /* cycle count */
    432628#endif
     629#if  __mips == 32
     630#define C0_COUNT        $9              /* cycle count */
     631#endif
    433632
    434633#define C0_TLBHI        $10             /* tlb entry hi */
    435634
    436635#if  __mips == 3
     636#define C0_COMPARE      $11             /* cyccle count comparator  */
     637#endif
     638
     639#if  __mips == 32
    437640#define C0_COMPARE      $11             /* cyccle count comparator  */
    438641#endif
     
    460663#endif
    461664
     665#if  __mips == 32
     666#define C0_CONFIG       $16             /* configuration register */
     667#define C0_LLADDR       $17             /* linked load address */
     668#define C0_WATCHLO      $18             /* watchpoint trap register */
     669#define C0_WATCHHI      $19             /* watchpoint trap register */
     670#define C0_XCTXT    $20     /* extended tlb context */
     671#define C0_ECC          $26             /* secondary cache ECC control */
     672#define C0_CACHEERR     $27             /* cache error status */
     673#define C0_TAGLO        $28             /* cache tag lo */
     674#define C0_TAGHI        $29             /* cache tag hi */
     675#define C0_ERRPC        $30             /* cache error pc */
     676#endif
     677
     678
    462679#define C1_REVISION     $0
    463680#define C1_STATUS       $31
     
    476693
    477694#endif /* _IDTCPU_H__ */
     695
  • cpukit/score/cpu/mips/iregdef.h

    r8fa65f5 r5194a28  
    230230#define R_TLBLO         73
    231231#endif
    232 #if  __mips == 3
     232#if  (__mips == 3 ) || ( __mips == 32)
    233233#define R_TLBLO0        73
    234234#endif
     
    244244#define NREGS           81
    245245#endif
    246 #if  __mips == 3
     246#if  (__mips == 3 ) || ( __mips == 32)
    247247#define R_TLBLO1        81
    248248#define R_PAGEMASK      82
     
    299299#define R_FP            R_R30
    300300#define R_RA            R_R31
    301 
     301#define R_SZ 4
    302302/* disabled for RTEMS */
    303303#if 0
     
    330330
    331331#endif /* __IREGDEF_H__ */
     332
  • cpukit/score/cpu/mips/rtems/asm.h

    r8fa65f5 r5194a28  
    158158
    159159#endif
     160/* end of include file */
     161
  • cpukit/score/cpu/mips/rtems/mips/idtcpu.h

    r8fa65f5 r5194a28  
    6161#define DB_VEC  (K0BASE+0x40)           /* debug vector */
    6262#define E_VEC   (K0BASE+0x80)           /* exception vector */
     63#elif  __mips == 32
     64#define T_VEC   (K0BASE+0x000)          /* tlbmiss vector */
     65#define X_VEC   (K0BASE+0x080)          /* xtlbmiss vector */
     66#define C_VEC   (K0BASE+0x100)          /* cache error vector */
     67#define E_VEC   (K0BASE+0x180)          /* exception vector */
    6368#elif  __mips == 3
    6469#define T_VEC   (K0BASE+0x000)          /* tlbmiss vector */
     
    9297#define MAXCACHE        0x40000         /* 256*1024   256k */   
    9398
    94 #if  __mips == 3
     99#if  __mips == 32
    95100/* R4000 configuration register definitions */
    96101#define CFG_CM          0x80000000      /* Master-Checker mode */
     
    186191#endif
    187192
     193#if  __mips == 3
     194/* R4000 configuration register definitions */
     195#define CFG_CM          0x80000000      /* Master-Checker mode */
     196#define CFG_ECMASK      0x70000000      /* System Clock Ratio */
     197#define CFG_ECBY2       0x00000000      /* divide by 2 */
     198#define CFG_ECBY3       0x10000000      /* divide by 3 */
     199#define CFG_ECBY4       0x20000000      /* divide by 4 */
     200#define CFG_EPMASK      0x0f000000      /* Transmit data pattern */
     201#define CFG_EPD         0x00000000      /* D */
     202#define CFG_EPDDX       0x01000000      /* DDX */
     203#define CFG_EPDDXX      0x02000000      /* DDXX */
     204#define CFG_EPDXDX      0x03000000      /* DXDX */
     205#define CFG_EPDDXXX     0x04000000      /* DDXXX */
     206#define CFG_EPDDXXXX    0x05000000      /* DDXXXX */
     207#define CFG_EPDXXDXX    0x06000000      /* DXXDXX */
     208#define CFG_EPDDXXXXX   0x07000000      /* DDXXXXX */
     209#define CFG_EPDXXXDXXX  0x08000000      /* DXXXDXXX */
     210#define CFG_SBMASK      0x00c00000      /* Secondary cache block size */
     211#define CFG_SBSHIFT     22
     212#define CFG_SB4         0x00000000      /* 4 words */
     213#define CFG_SB8         0x00400000      /* 8 words */
     214#define CFG_SB16        0x00800000      /* 16 words */
     215#define CFG_SB32        0x00c00000      /* 32 words */
     216#define CFG_SS          0x00200000      /* Split secondary cache */
     217#define CFG_SW          0x00100000      /* Secondary cache port width */
     218#define CFG_EWMASK      0x000c0000      /* System port width */
     219#define CFG_EWSHIFT     18
     220#define CFG_EW64        0x00000000      /* 64 bit */
     221#define CFG_EW32        0x00010000      /* 32 bit */
     222#define CFG_SC          0x00020000      /* Secondary cache absent */
     223#define CFG_SM          0x00010000      /* Dirty Shared mode disabled */
     224#define CFG_BE          0x00008000      /* Big Endian */
     225#define CFG_EM          0x00004000      /* ECC mode enable */
     226#define CFG_EB          0x00002000      /* Block ordering */
     227#define CFG_ICMASK      0x00000e00      /* Instruction cache size */
     228#define CFG_ICSHIFT     9
     229#define CFG_DCMASK      0x000001c0      /* Data cache size */
     230#define CFG_DCSHIFT     6
     231#define CFG_IB          0x00000020      /* Instruction cache block size */
     232#define CFG_DB          0x00000010      /* Data cache block size */
     233#define CFG_CU          0x00000008      /* Update on Store Conditional */
     234#define CFG_K0MASK      0x00000007      /* KSEG0 coherency algorithm */
     235
     236/*
     237 * R4000 primary cache mode
     238 */
     239#define CFG_C_UNCACHED          2
     240#define CFG_C_NONCOHERENT       3
     241#define CFG_C_COHERENTXCL       4
     242#define CFG_C_COHERENTXCLW      5
     243#define CFG_C_COHERENTUPD       6
     244
     245/*
     246 * R4000 cache operations (should be in assembler...?)
     247 */
     248#define Index_Invalidate_I               0x0         /* 0       0 */
     249#define Index_Writeback_Inv_D            0x1         /* 0       1 */
     250#define Index_Invalidate_SI              0x2         /* 0       2 */
     251#define Index_Writeback_Inv_SD           0x3         /* 0       3 */
     252#define Index_Load_Tag_I                 0x4         /* 1       0 */
     253#define Index_Load_Tag_D                 0x5         /* 1       1 */
     254#define Index_Load_Tag_SI                0x6         /* 1       2 */
     255#define Index_Load_Tag_SD                0x7         /* 1       3 */
     256#define Index_Store_Tag_I                0x8         /* 2       0 */
     257#define Index_Store_Tag_D                0x9         /* 2       1 */
     258#define Index_Store_Tag_SI               0xA         /* 2       2 */
     259#define Index_Store_Tag_SD               0xB         /* 2       3 */
     260#define Create_Dirty_Exc_D               0xD         /* 3       1 */
     261#define Create_Dirty_Exc_SD              0xF         /* 3       3 */
     262#define Hit_Invalidate_I                 0x10        /* 4       0 */
     263#define Hit_Invalidate_D                 0x11        /* 4       1 */
     264#define Hit_Invalidate_SI                0x12        /* 4       2 */
     265#define Hit_Invalidate_SD                0x13        /* 4       3 */
     266#define Hit_Writeback_Inv_D              0x15        /* 5       1 */
     267#define Hit_Writeback_Inv_SD             0x17        /* 5       3 */
     268#define Fill_I                           0x14        /* 5       0 */
     269#define Hit_Writeback_D                  0x19        /* 6       1 */
     270#define Hit_Writeback_SD                 0x1B        /* 6       3 */
     271#define Hit_Writeback_I                  0x18        /* 6       0 */
     272#define Hit_Set_Virtual_SI               0x1E        /* 7       2 */
     273#define Hit_Set_Virtual_SD               0x1F        /* 7       3 */
     274
     275#ifndef WAIT
     276#define WAIT .word 0x42000020
     277#endif /* WAIT */
     278
     279/* Disabled by joel -- horrible overload of common word.
     280#ifndef wait
     281#define wait .word 0x42000020
     282#endif wait
     283*/
     284
     285#endif
     286
    188287/*
    189288** TLB resource defines
     
    221320#if  __mips == 3
    222321#define N_TLB_ENTRIES   48
     322
     323#define TLBHI_VPN2MASK  0xffffe000
     324#define TLBHI_PIDMASK   0x000000ff
     325#define TLBHI_NPID      256
     326
     327#define TLBLO_PFNMASK   0x3fffffc0
     328#define TLBLO_PFNSHIFT  6
     329#define TLBLO_D         0x00000004      /* writeable */
     330#define TLBLO_V         0x00000002      /* valid bit */
     331#define TLBLO_G         0x00000001      /* global access bit */
     332#define TLBLO_CMASK     0x00000038      /* cache algorithm mask */
     333#define TLBLO_CSHIFT    3
     334
     335#define TLBLO_UNCACHED          (CFG_C_UNCACHED<<TLBLO_CSHIFT)
     336#define TLBLO_NONCOHERENT       (CFG_C_NONCOHERENT<<TLBLO_CSHIFT)
     337#define TLBLO_COHERENTXCL       (CFG_C_COHERENTXCL<<TLBLO_CSHIFT)
     338#define TLBLO_COHERENTXCLW      (CFG_C_COHERENTXCLW<<TLBLO_CSHIFT)
     339#define TLBLO_COHERENTUPD       (CFG_C_COHERENTUPD<<TLBLO_CSHIFT)
     340
     341#define TLBINX_PROBE    0x80000000
     342#define TLBINX_INXMASK  0x0000003f
     343
     344#define TLBRAND_RANDMASK        0x0000003f
     345
     346#define TLBCTXT_BASEMASK        0xff800000
     347#define TLBCTXT_BASESHIFT       23
     348
     349#define TLBCTXT_VPN2MASK        0x007ffff0
     350#define TLBCTXT_VPN2SHIFT       4
     351
     352#define TLBPGMASK_MASK          0x01ffe000
     353#endif
     354
     355#if  __mips == 32
     356#define N_TLB_ENTRIES   16
    223357
    224358#define TLBHI_VPN2MASK  0xffffe000
     
    384518#endif
    385519
    386 
     520#if  __mips == 32
     521#define SR_CUMASK       0xf0000000      /* coproc usable bits */
     522#define SR_CU3          0x80000000      /* Coprocessor 3 usable */
     523#define SR_CU2          0x40000000      /* Coprocessor 2 usable */
     524#define SR_CU1          0x20000000      /* Coprocessor 1 usable */
     525#define SR_CU0          0x10000000      /* Coprocessor 0 usable */
     526
     527#define SR_RP           0x08000000      /* Reduced power operation */
     528#define SR_FR           0x04000000      /* Additional floating point registers */
     529#define SR_RE           0x02000000      /* Reverse endian in user mode */
     530
     531#define SR_BEV          0x00400000      /* Use boot exception vectors */
     532#define SR_TS           0x00200000      /* TLB shutdown */
     533#define SR_SR           0x00100000      /* Soft reset */
     534#define SR_CH           0x00040000      /* Cache hit */
     535#define SR_CE           0x00020000      /* Use cache ECC  */
     536#define SR_DE           0x00010000      /* Disable cache exceptions */
     537
     538/*
     539**      status register interrupt masks and bits
     540*/
     541
     542#define SR_IMASK        0x0000ff00      /* Interrupt mask */
     543#define SR_IMASK8       0x00000000      /* mask level 8 */
     544#define SR_IMASK7       0x00008000      /* mask level 7 */
     545#define SR_IMASK6       0x0000c000      /* mask level 6 */
     546#define SR_IMASK5       0x0000e000      /* mask level 5 */
     547#define SR_IMASK4       0x0000f000      /* mask level 4 */
     548#define SR_IMASK3       0x0000f800      /* mask level 3 */
     549#define SR_IMASK2       0x0000fc00      /* mask level 2 */
     550#define SR_IMASK1       0x0000fe00      /* mask level 1 */
     551#define SR_IMASK0       0x0000ff00      /* mask level 0 */
     552
     553#define SR_IMASKSHIFT   8
     554
     555#define SR_IBIT8        0x00008000      /* bit level 8 */
     556#define SR_IBIT7        0x00004000      /* bit level 7 */
     557#define SR_IBIT6        0x00002000      /* bit level 6 */
     558#define SR_IBIT5        0x00001000      /* bit level 5 */
     559#define SR_IBIT4        0x00000800      /* bit level 4 */
     560#define SR_IBIT3        0x00000400      /* bit level 3 */
     561#define SR_IBIT2        0x00000200      /* bit level 2 */
     562#define SR_IBIT1        0x00000100      /* bit level 1 */
     563
     564#define SR_KSMASK       0x00000018      /* Kernel mode mask */
     565#define SR_KSUSER       0x00000010      /* User mode */
     566#define SR_KSSUPER      0x00000008      /* Supervisor mode */
     567#define SR_KSKERNEL     0x00000000      /* Kernel mode */
     568#define SR_ERL          0x00000004      /* Error level */
     569#define SR_EXL          0x00000002      /* Exception level */
     570#define SR_IE           0x00000001      /* Interrupts enabled */
     571#endif
    387572
    388573/*
     
    415600#endif
    416601
     602#if  __mips == 32
     603#define C0_TLBLO0       $2              /* tlb entry low 0 */
     604#define C0_TLBLO1       $3              /* tlb entry low 1 */
     605#endif
     606
     607
    417608#define C0_CTXT         $4              /* tlb context */
    418609
     
    422613#endif
    423614
     615#if  __mips == 32
     616#define C0_PAGEMASK     $5              /* tlb page mask */
     617#define C0_WIRED        $6              /* number of wired tlb entries */
     618#endif
     619
    424620#if  __mips == 1
    425621#define C0_TAR          $6
     
    431627#define C0_COUNT        $9              /* cycle count */
    432628#endif
     629#if  __mips == 32
     630#define C0_COUNT        $9              /* cycle count */
     631#endif
    433632
    434633#define C0_TLBHI        $10             /* tlb entry hi */
    435634
    436635#if  __mips == 3
     636#define C0_COMPARE      $11             /* cyccle count comparator  */
     637#endif
     638
     639#if  __mips == 32
    437640#define C0_COMPARE      $11             /* cyccle count comparator  */
    438641#endif
     
    460663#endif
    461664
     665#if  __mips == 32
     666#define C0_CONFIG       $16             /* configuration register */
     667#define C0_LLADDR       $17             /* linked load address */
     668#define C0_WATCHLO      $18             /* watchpoint trap register */
     669#define C0_WATCHHI      $19             /* watchpoint trap register */
     670#define C0_XCTXT    $20     /* extended tlb context */
     671#define C0_ECC          $26             /* secondary cache ECC control */
     672#define C0_CACHEERR     $27             /* cache error status */
     673#define C0_TAGLO        $28             /* cache tag lo */
     674#define C0_TAGHI        $29             /* cache tag hi */
     675#define C0_ERRPC        $30             /* cache error pc */
     676#endif
     677
     678
    462679#define C1_REVISION     $0
    463680#define C1_STATUS       $31
     
    476693
    477694#endif /* _IDTCPU_H__ */
     695
  • cpukit/score/cpu/mips/rtems/mips/iregdef.h

    r8fa65f5 r5194a28  
    230230#define R_TLBLO         73
    231231#endif
    232 #if  __mips == 3
     232#if  (__mips == 3 ) || ( __mips == 32)
    233233#define R_TLBLO0        73
    234234#endif
     
    244244#define NREGS           81
    245245#endif
    246 #if  __mips == 3
     246#if  (__mips == 3 ) || ( __mips == 32)
    247247#define R_TLBLO1        81
    248248#define R_PAGEMASK      82
     
    299299#define R_FP            R_R30
    300300#define R_RA            R_R31
    301 
     301#define R_SZ 4
    302302/* disabled for RTEMS */
    303303#if 0
     
    330330
    331331#endif /* __IREGDEF_H__ */
     332
  • cpukit/score/cpu/mips/rtems/score/cpu.h

    r8fa65f5 r5194a28  
    1 /**
    2  * @file rtems/score/cpu.h
    3  */
    4 
    51/*
    62 *  Mips CPU Dependent Header File
     
    5349#endif
    5450
     51#ifndef TRUE
     52#define TRUE 1
     53#warning "TRUE was not defined, assuming default of 1"
     54#endif
     55#ifndef FALSE
     56#define FALSE 0
     57#warning "FALSE was not defined, assuming default of 0"
     58#endif
     59
     60
    5561/* conditional compilation parameters */
    5662
     
    188194 *  If FALSE, then the RTEMS_FLOATING_POINT task attribute is followed.
    189195 *
     196 *  So far, the only CPU in which this option has been used is the
     197 *  HP PA-RISC.  The HP C compiler and gcc both implicitly use the
     198 *  floating point registers to perform integer multiplies.  If
     199 *  a function which you would not think utilize the FP unit DOES,
     200 *  then one can not easily predict which tasks will use the FP hardware.
     201 *  In this case, this option should be TRUE.
     202 *
    190203 *  If CPU_HARDWARE_FP is FALSE, then this should be FALSE as well.
    191204 */
     
    315328
    316329/*
    317  *  Processor defined structures required for cpukit/score.
     330 *  Processor defined structures
     331 *
     332 *  Examples structures include the descriptor tables from the i386
     333 *  and the processor control structure on the i960ca.
    318334 */
    319335
     
    358374
    359375/* WARNING: If this structure is modified, the constants in cpu.h must be updated. */
    360 #if __mips == 1
     376#if (__mips == 1) || (__mips == 32)
    361377#define __MIPS_REGISTER_TYPE     uint32_t 
    362378#define __MIPS_FPU_REGISTER_TYPE uint32_t 
     
    535551                                  /*         all MIPS CPUs (at least MGV) */
    536552#endif
    537 #if  __mips == 3
     553#if  (__mips == 3) || (__mips == 32)
    538554  __MIPS_REGISTER_TYPE  tlblo0;   /* 73 - NOT FILLED IN, doesn't exist on */
    539555                                  /*         all MIPS CPUs (at least MGV) */
     
    551567  __MIPS_REGISTER_TYPE  tar ;     /* 80 -- target address register, filled on exceptions */
    552568  /* end of __mips == 1 so NREGS == 81 */
    553 #if  __mips == 3
     569#if  (__mips == 3) || (__mips == 32)
    554570  __MIPS_REGISTER_TYPE  tlblo1;   /* 81 -- NOT FILLED IN */
    555571  __MIPS_REGISTER_TYPE  pagemask; /* 82 -- NOT FILLED IN */
     
    686702 */
    687703
    688 #define CPU_STACK_MINIMUM_SIZE          (2048*sizeof(uint32_t  ))
     704#define CPU_STACK_MINIMUM_SIZE          (2048*sizeof(unsigned32))
    689705
    690706
     
    849865
    850866
    851 #if __mips == 3
    852 #define _INTON  (SR_EXL | SR_IE)
     867#if (__mips == 3) || (__mips == 32)
     868#define _INTON          SR_IE
    853869#define _EXTRABITS      0
    854870#endif
     
    866882        (_the_context)->sp = _stack_tmp; \
    867883        (_the_context)->fp = _stack_tmp; \
    868         (_the_context)->ra = (uint64_t  )_entry_point; \
     884        (_the_context)->ra = (__MIPS_REGISTER_TYPE)_entry_point; \
    869885        (_the_context)->c0_sr = ((_intlvl==0)?(0xFF00 | _INTON):( ((_intlvl<<9) & 0xfc00) | \
    870886                                                       0x300 | \
  • cpukit/score/cpu/mips/rtems/score/mips.h

    r8fa65f5 r5194a28  
    3131 */
    3232
    33 #if __mips == 3
     33#if (__mips == 3) || (__mips == 32)
    3434#ifdef ASM
    3535#define SR_INTERRUPT_ENABLE_BITS 0x01
     
    6060#endif
    6161
     62
    6263#if (__mips == 1)
    6364#define CPU_MODEL_NAME  "ISA Level 1 or 2"
    64 #elif (__mips == 3)
     65#elif (__mips == 3) || (__mips == 32)
    6566#if defined(__mips64)
    6667#define CPU_MODEL_NAME  "ISA Level 4"
     
    219220 */
    220221
     222#if ( MIPS_HAS_FPU == 1 )
     223
    221224#define mips_get_fcr31( _x ) \
    222225  do { \
     
    231234  } while(0)
    232235
     236#else
     237
     238#define mips_get_fcr31( _x )
     239#define mips_set_fcr31( _x )
     240
     241#endif
    233242
    234243/*
     
    272281
    273282#endif /* ! _INCLUDE_MIPS_h */
     283/* end of include file */
Note: See TracChangeset for help on using the changeset viewer.