Changeset 293c0e30 in rtems
- Timestamp:
- 03/15/02 19:47:36 (22 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 5cf3f41
- Parents:
- 5ab8aef
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/exec/score/cpu/mips/ChangeLog
r5ab8aef r293c0e30 1 2002-03-13 Greg Menke <gregory.menke@gsfc.nasa.gov> 2 3 * cpu_asm.S: Fixed a sneaky return from int w/ ints disabled bug. 4 * rtems/score/cpu.h: Fixed register numbering in comments and made 5 interrupt enable/disable more robust. 6 1 7 2002-03-05 Greg Menke <gregory.menke@gsfc.nasa.gov> 2 3 8 * cpu_asm.S: Added support for the debug exception vector, cleaned 4 9 up the exception processing & exception return stuff. Re-added -
c/src/exec/score/cpu/mips/cpu_asm.S
r5ab8aef r293c0e30 946 946 li t1,SR_EXL | SR_IE 947 947 #elif __mips == 1 948 li t1,SR_IEC | SR_KUC /* ints off, kernel mode on (kernel mode enabled is bit clear..argh!) */ 948 /* ints off, current & prev kernel mode on (kernel mode enabled is bit clear..argh!) */ 949 li t1,SR_IEC | SR_KUP | SR_KUC 949 950 #endif 950 951 not t1 951 952 and t0, t1 953 954 #if __mips == 1 955 /* make sure previous int enable is on because we're returning from an interrupt 956 ** which means interrupts have to be enabled 957 */ 958 li t1,SR_IEP 959 or t0,t1 960 #endif 952 961 MTC0 t0, C0_SR 953 962 NOP -
c/src/exec/score/cpu/mips/rtems/score/cpu.h
r5ab8aef r293c0e30 554 554 __MIPS_REGISTER_TYPE mode; /* 78 -- NOT FILLED IN (not enough info) */ 555 555 __MIPS_REGISTER_TYPE prid; /* 79 -- NOT FILLED IN (not need to do so) */ 556 /* end of __mips == 1 so NREGS == 80 */ 556 __MIPS_REGISTER_TYPE tar ; /* 80 -- target address register, filled on exceptions */ 557 /* end of __mips == 1 so NREGS == 81 */ 557 558 #if __mips == 3 558 __MIPS_REGISTER_TYPE tlblo1; /* 8 0-- NOT FILLED IN */559 __MIPS_REGISTER_TYPE pagemask; /* 8 1-- NOT FILLED IN */560 __MIPS_REGISTER_TYPE wired; /* 8 2-- NOT FILLED IN */561 __MIPS_REGISTER_TYPE count; /* 8 3-- NOT FILLED IN */562 __MIPS_REGISTER_TYPE compare; /* 8 4-- NOT FILLED IN */563 __MIPS_REGISTER_TYPE config; /* 8 5-- NOT FILLED IN */564 __MIPS_REGISTER_TYPE lladdr; /* 8 6-- NOT FILLED IN */565 __MIPS_REGISTER_TYPE watchlo; /* 8 7-- NOT FILLED IN */566 __MIPS_REGISTER_TYPE watchhi; /* 8 8-- NOT FILLED IN */567 __MIPS_REGISTER_TYPE ecc; /* 89-- NOT FILLED IN */568 __MIPS_REGISTER_TYPE cacheerr; /* 9 0-- NOT FILLED IN */569 __MIPS_REGISTER_TYPE taglo; /* 9 1-- NOT FILLED IN */570 __MIPS_REGISTER_TYPE taghi; /* 9 2-- NOT FILLED IN */571 __MIPS_REGISTER_TYPE errpc; /* 9 3-- NOT FILLED IN */572 __MIPS_REGISTER_TYPE xctxt; /* 9 4-- NOT FILLED IN */573 /* end of __mips == 3 so NREGS == 9 5*/559 __MIPS_REGISTER_TYPE tlblo1; /* 81 -- NOT FILLED IN */ 560 __MIPS_REGISTER_TYPE pagemask; /* 82 -- NOT FILLED IN */ 561 __MIPS_REGISTER_TYPE wired; /* 83 -- NOT FILLED IN */ 562 __MIPS_REGISTER_TYPE count; /* 84 -- NOT FILLED IN */ 563 __MIPS_REGISTER_TYPE compare; /* 85 -- NOT FILLED IN */ 564 __MIPS_REGISTER_TYPE config; /* 86 -- NOT FILLED IN */ 565 __MIPS_REGISTER_TYPE lladdr; /* 87 -- NOT FILLED IN */ 566 __MIPS_REGISTER_TYPE watchlo; /* 88 -- NOT FILLED IN */ 567 __MIPS_REGISTER_TYPE watchhi; /* 89 -- NOT FILLED IN */ 568 __MIPS_REGISTER_TYPE ecc; /* 90 -- NOT FILLED IN */ 569 __MIPS_REGISTER_TYPE cacheerr; /* 91 -- NOT FILLED IN */ 570 __MIPS_REGISTER_TYPE taglo; /* 92 -- NOT FILLED IN */ 571 __MIPS_REGISTER_TYPE taghi; /* 93 -- NOT FILLED IN */ 572 __MIPS_REGISTER_TYPE errpc; /* 94 -- NOT FILLED IN */ 573 __MIPS_REGISTER_TYPE xctxt; /* 95 -- NOT FILLED IN */ 574 /* end of __mips == 3 so NREGS == 96 */ 574 575 #endif 575 576 … … 756 757 #define _CPU_ISR_Disable( _level ) \ 757 758 do { \ 758 mips_get_sr( _level ); \ 759 mips_set_sr( _level & ~SR_INTERRUPT_ENABLE_BITS ); \ 760 _level &= SR_INTERRUPT_ENABLE_BITS; \ 759 unsigned int _scratch; \ 760 mips_get_sr( _scratch ); \ 761 mips_set_sr( _scratch & ~SR_INTERRUPT_ENABLE_BITS ); \ 762 _level = _scratch & SR_INTERRUPT_ENABLE_BITS; \ 761 763 } while(0) 762 764 … … 783 785 #define _CPU_ISR_Flash( _xlevel ) \ 784 786 do { \ 785 _CPU_ISR_Enable( _xlevel ); \ 786 _CPU_ISR_Disable( _xlevel ); \ 787 unsigned int _scratch2 = _xlevel; \ 788 _CPU_ISR_Enable( _scratch2 ); \ 789 _CPU_ISR_Disable( _scratch2 ); \ 790 _xlevel = _scratch2; \ 787 791 } while(0) 788 792 -
cpukit/score/cpu/mips/ChangeLog
r5ab8aef r293c0e30 1 2002-03-13 Greg Menke <gregory.menke@gsfc.nasa.gov> 2 3 * cpu_asm.S: Fixed a sneaky return from int w/ ints disabled bug. 4 * rtems/score/cpu.h: Fixed register numbering in comments and made 5 interrupt enable/disable more robust. 6 1 7 2002-03-05 Greg Menke <gregory.menke@gsfc.nasa.gov> 2 3 8 * cpu_asm.S: Added support for the debug exception vector, cleaned 4 9 up the exception processing & exception return stuff. Re-added -
cpukit/score/cpu/mips/cpu_asm.S
r5ab8aef r293c0e30 946 946 li t1,SR_EXL | SR_IE 947 947 #elif __mips == 1 948 li t1,SR_IEC | SR_KUC /* ints off, kernel mode on (kernel mode enabled is bit clear..argh!) */ 948 /* ints off, current & prev kernel mode on (kernel mode enabled is bit clear..argh!) */ 949 li t1,SR_IEC | SR_KUP | SR_KUC 949 950 #endif 950 951 not t1 951 952 and t0, t1 953 954 #if __mips == 1 955 /* make sure previous int enable is on because we're returning from an interrupt 956 ** which means interrupts have to be enabled 957 */ 958 li t1,SR_IEP 959 or t0,t1 960 #endif 952 961 MTC0 t0, C0_SR 953 962 NOP -
cpukit/score/cpu/mips/rtems/score/cpu.h
r5ab8aef r293c0e30 554 554 __MIPS_REGISTER_TYPE mode; /* 78 -- NOT FILLED IN (not enough info) */ 555 555 __MIPS_REGISTER_TYPE prid; /* 79 -- NOT FILLED IN (not need to do so) */ 556 /* end of __mips == 1 so NREGS == 80 */ 556 __MIPS_REGISTER_TYPE tar ; /* 80 -- target address register, filled on exceptions */ 557 /* end of __mips == 1 so NREGS == 81 */ 557 558 #if __mips == 3 558 __MIPS_REGISTER_TYPE tlblo1; /* 8 0-- NOT FILLED IN */559 __MIPS_REGISTER_TYPE pagemask; /* 8 1-- NOT FILLED IN */560 __MIPS_REGISTER_TYPE wired; /* 8 2-- NOT FILLED IN */561 __MIPS_REGISTER_TYPE count; /* 8 3-- NOT FILLED IN */562 __MIPS_REGISTER_TYPE compare; /* 8 4-- NOT FILLED IN */563 __MIPS_REGISTER_TYPE config; /* 8 5-- NOT FILLED IN */564 __MIPS_REGISTER_TYPE lladdr; /* 8 6-- NOT FILLED IN */565 __MIPS_REGISTER_TYPE watchlo; /* 8 7-- NOT FILLED IN */566 __MIPS_REGISTER_TYPE watchhi; /* 8 8-- NOT FILLED IN */567 __MIPS_REGISTER_TYPE ecc; /* 89-- NOT FILLED IN */568 __MIPS_REGISTER_TYPE cacheerr; /* 9 0-- NOT FILLED IN */569 __MIPS_REGISTER_TYPE taglo; /* 9 1-- NOT FILLED IN */570 __MIPS_REGISTER_TYPE taghi; /* 9 2-- NOT FILLED IN */571 __MIPS_REGISTER_TYPE errpc; /* 9 3-- NOT FILLED IN */572 __MIPS_REGISTER_TYPE xctxt; /* 9 4-- NOT FILLED IN */573 /* end of __mips == 3 so NREGS == 9 5*/559 __MIPS_REGISTER_TYPE tlblo1; /* 81 -- NOT FILLED IN */ 560 __MIPS_REGISTER_TYPE pagemask; /* 82 -- NOT FILLED IN */ 561 __MIPS_REGISTER_TYPE wired; /* 83 -- NOT FILLED IN */ 562 __MIPS_REGISTER_TYPE count; /* 84 -- NOT FILLED IN */ 563 __MIPS_REGISTER_TYPE compare; /* 85 -- NOT FILLED IN */ 564 __MIPS_REGISTER_TYPE config; /* 86 -- NOT FILLED IN */ 565 __MIPS_REGISTER_TYPE lladdr; /* 87 -- NOT FILLED IN */ 566 __MIPS_REGISTER_TYPE watchlo; /* 88 -- NOT FILLED IN */ 567 __MIPS_REGISTER_TYPE watchhi; /* 89 -- NOT FILLED IN */ 568 __MIPS_REGISTER_TYPE ecc; /* 90 -- NOT FILLED IN */ 569 __MIPS_REGISTER_TYPE cacheerr; /* 91 -- NOT FILLED IN */ 570 __MIPS_REGISTER_TYPE taglo; /* 92 -- NOT FILLED IN */ 571 __MIPS_REGISTER_TYPE taghi; /* 93 -- NOT FILLED IN */ 572 __MIPS_REGISTER_TYPE errpc; /* 94 -- NOT FILLED IN */ 573 __MIPS_REGISTER_TYPE xctxt; /* 95 -- NOT FILLED IN */ 574 /* end of __mips == 3 so NREGS == 96 */ 574 575 #endif 575 576 … … 756 757 #define _CPU_ISR_Disable( _level ) \ 757 758 do { \ 758 mips_get_sr( _level ); \ 759 mips_set_sr( _level & ~SR_INTERRUPT_ENABLE_BITS ); \ 760 _level &= SR_INTERRUPT_ENABLE_BITS; \ 759 unsigned int _scratch; \ 760 mips_get_sr( _scratch ); \ 761 mips_set_sr( _scratch & ~SR_INTERRUPT_ENABLE_BITS ); \ 762 _level = _scratch & SR_INTERRUPT_ENABLE_BITS; \ 761 763 } while(0) 762 764 … … 783 785 #define _CPU_ISR_Flash( _xlevel ) \ 784 786 do { \ 785 _CPU_ISR_Enable( _xlevel ); \ 786 _CPU_ISR_Disable( _xlevel ); \ 787 unsigned int _scratch2 = _xlevel; \ 788 _CPU_ISR_Enable( _scratch2 ); \ 789 _CPU_ISR_Disable( _scratch2 ); \ 790 _xlevel = _scratch2; \ 787 791 } while(0) 788 792
Note: See TracChangeset
for help on using the changeset viewer.