diff --git a/arch/xtensa/src/common/xtensa.h b/arch/xtensa/src/common/xtensa.h index 5d2448728e..6827428c11 100644 --- a/arch/xtensa/src/common/xtensa.h +++ b/arch/xtensa/src/common/xtensa.h @@ -237,10 +237,7 @@ void xtensa_dumpstate(void); /* Initialization */ #if XCHAL_CP_NUM > 0 -void xtensa_coproc_init(void); - struct xtensa_cpstate_s; -void xtensa_coproc_release(struct xtensa_cpstate_s *cpstate); void xtensa_coproc_enable(struct xtensa_cpstate_s *cpstate, int cpset); void xtensa_coproc_disable(struct xtensa_cpstate_s *cpstate, int cpset); #endif diff --git a/arch/xtensa/src/common/xtensa_coproc.S b/arch/xtensa/src/common/xtensa_coproc.S index 419507fbdf..3ae4dea3d6 100644 --- a/arch/xtensa/src/common/xtensa_coproc.S +++ b/arch/xtensa/src/common/xtensa_coproc.S @@ -71,114 +71,6 @@ _xtensa_coproc_saoffsets: .text -/**************************************************************************** - * Name: xtensa_coproc_init - * - * Description: - * Initializes.global co-processor management data, setting all co- - * processors to "unowned". Leaves CPENABLE as it found it (does NOT clear - * it). - * - * Called during initialization of the NuttX, before any threads run. - * - * This may be called from normal Xtensa single-threaded application code - * which might use co-processors. The Xtensa run-time initialization - * enables all co-processors. They must remain enabled here, else a co- - * processor exception might occur outside of a thread, which the exception - * handler doesn't expect. - * - * Entry Conditions: - * Xtensa single-threaded run-time environment is in effect. - * No thread is yet running. - * - * Exit conditions: - * None. - * - * Obeys ABI conventions per prototype: - * void xtensa_coproc_init(void) - * - ****************************************************************************/ - - .global xtensa_coproc_init - .type xtensa_coproc_init, @function - - .align 4 - .literal_position - .align 4 - -xtensa_coproc_init: - - /* Initialize thread co-processor ownerships to 0 (unowned). */ - - movi a2, _xt_coproc_owner_sa /* a2 = base of owner array */ - addi a3, a2, (XTENSA_CP_MAX*portNUM_PROCESSORS) << 2 /* a3 = top+1 of owner array */ - movi a4, 0 /* a4 = 0 (unowned) */ - -1: s32i a4, a2, 0 - addi a2, a2, 4 - bltu a2, a3, 1b - - ret - - .size xtensa_coproc_init, . - xtensa_coproc_init - -/**************************************************************************** - * Name: xtensa_coproc_release - * - * Description: - * Releases any and all co-processors owned by a given thread. The thread - * is identified by it's co-processor state save area defined in - * xtensa_context.h . - * - * Must be called before a thread's co-proc save area is deleted to avoid - * memory corruption when the exception handler tries to save the state. - * May be called when a thread terminates or completes but does not delete - * the co-proc save area, to avoid the exception handler having to save the - * thread's co-proc state before another thread can use it (optimization). - * - * Entry Conditions: - * A2 = Pointer to base of co-processor state save area. - * - * Exit conditions: - * None. - * - * Obeys ABI conventions per prototype: - * void xtensa_coproc_release(void * coproc_sa_base) - * - ****************************************************************************/ - - .global xtensa_coproc_release - .type xtensa_coproc_release, @function - - .align 4 - .literal_position - .align 4 - -xtensa_coproc_release: - getcoreid a5 - movi a3, XTENSA_CP_MAX << 2 - mull a5, a5, a3 - movi a3, _xt_coproc_owner_sa /* a3 = base of owner array */ - add a3, a3, a5 - - addi a4, a3, XTENSA_CP_MAX << 2 /* a4 = top+1 of owner array */ - movi a5, 0 /* a5 = 0 (unowned) */ - - rsil a6, XCHAL_EXCM_LEVEL /* Lock interrupts */ - -1: l32i a7, a3, 0 /* a7 = owner at a3 */ - bne a2, a7, 2f /* if (coproc_sa_base == owner) */ - - s32i a5, a3, 0 /* owner = unowned */ -2: addi a3, a3, 1<<2 /* a3 = next entry in owner array */ - bltu a3, a4, 1b /* repeat until end of array */ - -3: wsr a6, PS /* Restore interrupts */ - - ret - - .size xtensa_coproc_release, . - xtensa_coproc_release - /**************************************************************************** * Name: _xtensa_coproc_savestate * diff --git a/arch/xtensa/src/common/xtensa_exit.c b/arch/xtensa/src/common/xtensa_exit.c index 98ec9b6c5a..bf568f10d4 100644 --- a/arch/xtensa/src/common/xtensa_exit.c +++ b/arch/xtensa/src/common/xtensa_exit.c @@ -159,7 +159,6 @@ void _exit(int status) /* Disable co-processor support for the task that is exit-ing. */ tcb = this_task(); - xtensa_coproc_release(&tcb->xcp.cpstate); xtensa_coproc_disable(&tcb->xcp.cpstate, XTENSA_CP_ALLSET); #endif diff --git a/arch/xtensa/src/common/xtensa_initialize.c b/arch/xtensa/src/common/xtensa_initialize.c index 979ffd2c11..2041548b17 100644 --- a/arch/xtensa/src/common/xtensa_initialize.c +++ b/arch/xtensa/src/common/xtensa_initialize.c @@ -134,12 +134,6 @@ void up_initialize(void) xtensa_add_region(); -#if XCHAL_CP_NUM > 0 - /* Initialize co-processor management. */ - - xtensa_coproc_init(); -#endif - /* Initialize the interrupt subsystem */ xtensa_irq_initialize();