git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4687 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2012-09-17 10:46:10 +00:00
parent f3d472965e
commit e8ce6fcf43
5 changed files with 118 additions and 109 deletions

View File

@ -46,80 +46,84 @@
* Fixed IVOR offset table.
*/
.globl IVORS
IVORS: b IVOR0
.align 16
b IVOR1
.align 16
b IVOR2
.align 16
b IVOR3
.align 16
b IVOR4
.align 16
b IVOR5
.align 16
b IVOR6
.align 16
b IVOR7
.align 16
b IVOR8
.align 16
b IVOR9
.align 16
b IVOR10
.align 16
b IVOR11
.align 16
b IVOR12
.align 16
b IVOR13
.align 16
b IVOR14
.align 16
b IVOR15
IVORS:
IVOR0: b IVOR0
.align 4
IVOR1: b _IVOR1
.align 4
IVOR2: b _IVOR2
.align 4
IVOR3: b _IVOR3
.align 4
IVOR4: b _IVOR4
.align 4
IVOR5: b _IVOR5
.align 4
IVOR6: b _IVOR6
.align 4
IVOR7: b _IVOR7
.align 4
IVOR8: b _IVOR8
.align 4
IVOR9: b _IVOR9
.align 4
IVOR10: b _IVOR10
.align 4
IVOR11: b _IVOR11
.align 4
IVOR12: b _IVOR12
.align 4
IVOR13: b _IVOR13
.align 4
IVOR14: b _IVOR14
.align 4
IVOR15: b _IVOR15
/*
* Unhandled exceptions handler.
*/
.weak IVOR0
IVOR0:
.weak IVOR1
IVOR1:
.weak IVOR2
IVOR2:
.weak IVOR3
IVOR3:
.weak IVOR5
IVOR5:
.weak IVOR6
IVOR6:
.weak IVOR7
IVOR7:
.weak IVOR8
IVOR8:
.weak IVOR9
IVOR9:
.weak IVOR10
IVOR10:
.weak IVOR11
IVOR11:
.weak IVOR12
IVOR12:
.weak IVOR13
IVOR13:
.weak IVOR14
IVOR14:
.weak IVOR15
IVOR15:
.weak _IVOR0
_IVOR0:
.weak _IVOR1
_IVOR1:
.weak _IVOR2
_IVOR2:
.weak _IVOR3
_IVOR3:
.weak _IVOR5
_IVOR5:
.weak _IVOR6
_IVOR6:
.weak _IVOR7
_IVOR7:
.weak _IVOR8
_IVOR8:
.weak _IVOR9
_IVOR9:
.weak _IVOR10
_IVOR10:
.weak _IVOR11
_IVOR11:
.weak _IVOR12
_IVOR12:
.weak _IVOR13
_IVOR13:
.weak _IVOR14
_IVOR14:
.weak _IVOR15
_IVOR15:
.weak _unhandled_exception
.type _unhandled_exception, @function
_unhandled_exception:
b _unhandled_exception
b _unhandled_exception
/*
* IVOR4 handler (Book-E external interrupt).
*/
.align 4
.globl IVOR4
IVOR4:
.globl _IVOR4
.type _IVOR4, @function
_IVOR4:
/* Creation of the external stack frame (extctx structure).*/
stwu %sp, -80(%sp) /* Size of the extctx structure.*/
#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI
@ -184,11 +188,12 @@ IVOR4:
#endif
bl chSchIsPreemptionRequired
cmpli cr0, %r3, 0
beq cr0, .ctxrestore
beq cr0, _ivor_exit
bl chSchDoReschedule
/* Context restore.*/
.ctxrestore:
.globl _ivor_exit
_ivor_exit:
#if CH_DBG_SYSTEM_STATE_CHECK
bl dbg_check_unlock
#endif

View File

@ -1099,7 +1099,7 @@ vector259:
.weak vector260
vector260:
.globl _unhandled_irq
.weak _unhandled_irq
.type _unhandled_irq, @function
_unhandled_irq:
b _unhandled_irq

View File

@ -45,44 +45,46 @@
/*
* Unhandled exceptions handler.
*/
.weak IVOR0
IVOR0:
.weak IVOR1
IVOR1:
.weak IVOR2
IVOR2:
.weak IVOR3
IVOR3:
.weak IVOR5
IVOR5:
.weak IVOR6
IVOR6:
.weak IVOR7
IVOR7:
.weak IVOR8
IVOR8:
.weak IVOR9
IVOR9:
.weak IVOR11
IVOR11:
.weak IVOR12
IVOR12:
.weak IVOR13
IVOR13:
.weak IVOR14
IVOR14:
.weak IVOR15
IVOR15:
.globl _unhandled_exception
.weak _IVOR0
_IVOR0:
.weak _IVOR1
_IVOR1:
.weak _IVOR2
_IVOR2:
.weak _IVOR3
_IVOR3:
.weak _IVOR5
_IVOR5:
.weak _IVOR6
_IVOR6:
.weak _IVOR7
_IVOR7:
.weak _IVOR8
_IVOR8:
.weak _IVOR9
_IVOR9:
.weak _IVOR11
_IVOR11:
.weak _IVOR12
_IVOR12:
.weak _IVOR13
_IVOR13:
.weak _IVOR14
_IVOR14:
.weak _IVOR15
_IVOR15:
.weak _unhandled_exception
.type _unhandled_exception, @function
_unhandled_exception:
b _unhandled_exception
/*
* IVOR10 handler (Book-E decrementer).
* _IVOR10 handler (Book-E decrementer).
*/
.align 4
.globl IVOR10
IVOR10:
.globl _IVOR10
.type _IVOR10, @function
_IVOR10:
/* Creation of the external stack frame (extctx structure).*/
stwu %sp, -80(%sp) /* Size of the extctx structure.*/
#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI
@ -137,14 +139,15 @@ IVOR10:
cmpli cr0, %r3, 0
beq cr0, .ctxrestore
bl chSchDoReschedule
b .ctxrestore
b _ivor_exit
/*
* IVOR4 handler (Book-E external interrupt).
* _IVOR4 handler (Book-E external interrupt).
*/
.align 4
.globl IVOR4
IVOR4:
.globl _IVOR4
.type _IVOR4, @function
_IVOR4:
/* Creation of the external stack frame (extctx structure).*/
stwu %sp, -80(%sp) /* Size of the extctx structure.*/
#if PPC_USE_VLE && PPC_SUPPORTS_VLE_MULTI
@ -209,11 +212,12 @@ IVOR4:
#endif
bl chSchIsPreemptionRequired
cmpli cr0, %r3, 0
beq cr0, .ctxrestore
beq cr0, _ivor_exit
bl chSchDoReschedule
/* Context restore.*/
.ctxrestore:
.globl
_ivor_exit:
#if CH_DBG_SYSTEM_STATE_CHECK
bl dbg_check_unlock
#endif

View File

@ -1495,7 +1495,7 @@ vector358:
.weak vector359
vector359:
.globl _unhandled_irq
.weak _unhandled_irq
.type _unhandled_irq, @function
_unhandled_irq:
b _unhandled_irq

View File

@ -36,10 +36,10 @@ void port_init(void) {
#if PPC_SUPPORTS_IVORS
/* The CPU support IVOR registers, the kernel requires IVOR4 and IVOR10
and the initialization is performed here.*/
asm volatile ("li %r3, IVOR4@l \t\n"
asm volatile ("li %r3, _IVOR4@l \t\n"
"mtIVOR4 %r3 \t\n"
"li %r3, IVOR10@l \t\n"
"mtIVOR10 %r3");
"li %r3, _IVOR10@l \t\n"
"mtIVOR10 %r3" : : : "memory");
#endif
}