Changeset 1b109cb in mainline for arch/mips32/include/cp0.h


Ignore:
Timestamp:
2006-03-20T13:39:56Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9d3e185
Parents:
8d25b44
Message:

Cleanup of mips

  • inline register reads
  • better fpu disable/enable - global settings is automatically propagated to task
  • fast syscall
File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/mips32/include/cp0.h

    r8d25b44 r1b109cb  
    5959#define cp0_unmask_int(it) cp0_status_write(cp0_status_read() | (1<<(cp0_status_im_shift+(it))))
    6060
    61 extern  __u32 cp0_index_read(void);
    62 extern void cp0_index_write(__u32 val);
     61#define GEN_READ_CP0(nm,reg) static inline __u32 cp0_ ##nm##_read(void) \
     62  { \
     63      __u32 retval; \
     64      asm("mfc0 %0, $" #reg : "=r"(retval)); \
     65      return retval; \
     66  }
    6367
    64 extern __u32 cp0_random_read(void);
     68#define GEN_WRITE_CP0(nm,reg) static inline void cp0_ ##nm##_write(__u32 val) \
     69 { \
     70    asm("mtc0 %0, $" #reg : : "r"(val) ); \
     71 }
    6572
    66 extern __u32 cp0_entry_lo0_read(void);
    67 extern void cp0_entry_lo0_write(__u32 val);
     73GEN_READ_CP0(index, 0);
     74GEN_WRITE_CP0(index, 0);
    6875
    69 extern __u32 cp0_entry_lo1_read(void);
    70 extern void cp0_entry_lo1_write(__u32 val);
     76GEN_READ_CP0(random, 1);
    7177
    72 extern __u32 cp0_context_read(void);
    73 extern void cp0_context_write(__u32 val);
     78GEN_READ_CP0(entry_lo0, 2);
     79GEN_WRITE_CP0(entry_lo0, 2);
    7480
    75 extern __u32 cp0_pagemask_read(void);
    76 extern void cp0_pagemask_write(__u32 val);
     81GEN_READ_CP0(entry_lo1, 3);
     82GEN_WRITE_CP0(entry_lo1, 3);
    7783
    78 extern __u32 cp0_wired_read(void);
    79 extern void cp0_wired_write(__u32 val);
     84GEN_READ_CP0(context, 4);
     85GEN_WRITE_CP0(context, 4);
    8086
    81 extern __u32 cp0_badvaddr_read(void);
     87GEN_READ_CP0(pagemask, 5);
     88GEN_WRITE_CP0(pagemask, 5);
    8289
    83 extern __u32 cp0_count_read(void);
    84 extern void cp0_count_write(__u32 val);
     90GEN_READ_CP0(wired, 6);
     91GEN_WRITE_CP0(wired, 6);
    8592
    86 extern __u32 cp0_entry_hi_read(void);
    87 extern void cp0_entry_hi_write(__u32 val);
     93GEN_READ_CP0(badvaddr, 8);
    8894
    89 extern __u32 cp0_compare_read(void);
    90 extern void cp0_compare_write(__u32 val);
     95GEN_READ_CP0(count, 9);
     96GEN_WRITE_CP0(count, 9);
    9197
    92 extern __u32 cp0_status_read(void);
    93 extern void cp0_status_write(__u32 val);
     98GEN_READ_CP0(entry_hi, 10);
     99GEN_WRITE_CP0(entry_hi, 10);
    94100
    95 extern __u32 cp0_cause_read(void);
    96 extern void cp0_cause_write(__u32 val);
     101GEN_READ_CP0(compare, 11);
     102GEN_WRITE_CP0(compare, 11);
    97103
    98 extern __u32 cp0_epc_read(void);
    99 extern void cp0_epc_write(__u32 val);
     104GEN_READ_CP0(status, 12);
     105GEN_WRITE_CP0(status, 12);
    100106
    101 extern __u32 cp0_prid_read(void);
     107GEN_READ_CP0(cause, 13);
     108GEN_WRITE_CP0(cause, 13);
     109
     110GEN_READ_CP0(epc, 14);
     111GEN_WRITE_CP0(epc, 14);
     112
     113GEN_READ_CP0(prid, 15);
    102114
    103115#endif
Note: See TracChangeset for help on using the changeset viewer.