chirping78 opened a new pull request, #15636:
URL: https://github.com/apache/nuttx/pull/15636
## Summary
Currently `up_cpu_index` of xtensa arch is a non-inline function, which
means it will be called by `callX` instruction, and it will cause stack
push/pop operations.
And from "Cross Reference Table" of nuttx.map file, you can see this
function is called frequently:
```
up_cpu_index
/source/NuttX/nuttx/staging/libarch.a(esp32s3_cpuindex.o)
/source/NuttX/nuttx/staging/libsched.a(sched_self.o)
/source/NuttX/nuttx/staging/libdrivers.a(syslog_write.o)
/source/NuttX/nuttx/staging/libsched.a(group_join.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_create.o)
/source/NuttX/nuttx/staging/libdrivers.a(vsyslog.o)
/source/NuttX/nuttx/staging/libsched.a(sig_timedwait.o)
/source/NuttX/nuttx/staging/libsched.a(timer_create.o)
/source/NuttX/nuttx/staging/libsched.a(task_restart.o)
/source/NuttX/nuttx/staging/libsched.a(sched_getaffinity.o)
/source/NuttX/nuttx/staging/libsched.a(sched_getcpu.o)
/source/NuttX/nuttx/staging/libsched.a(sched_idletask.o)
/source/NuttX/nuttx/staging/libsched.a(sched_yield.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_detach.o)
/source/NuttX/nuttx/staging/libsched.a(mq_rcvinternal.o)
/source/NuttX/nuttx/staging/libsched.a(mq_sndinternal.o)
/source/NuttX/nuttx/staging/libsched.a(mq_send.o)
/source/NuttX/nuttx/staging/libsched.a(env_clearenv.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_sigdeliver.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_schedsigaction.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_saveusercontext.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_registerdump.o)
/source/NuttX/nuttx/staging/libdrivers.a(serial.o)
/source/NuttX/nuttx/staging/libsched.a(sig_allocpendingsigaction.o)
/source/NuttX/nuttx/staging/libsched.a(sig_pending.o)
/source/NuttX/nuttx/staging/libsched.a(sched_roundrobin.o)
/source/NuttX/nuttx/staging/libsched.a(mq_waitirq.o)
/source/NuttX/nuttx/staging/libsched.a(task_getpid.o)
/source/NuttX/nuttx/staging/libsched.a(task_exit.o)
/source/NuttX/nuttx/staging/libsched.a(sig_dispatch.o)
/source/NuttX/nuttx/staging/libsched.a(sig_unmaskpendingsignal.o)
/source/NuttX/nuttx/staging/libsched.a(sig_procmask.o)
/source/NuttX/nuttx/staging/libsched.a(sem_waitirq.o)
/source/NuttX/nuttx/staging/libsched.a(sem_clockwait.o)
/source/NuttX/nuttx/staging/libsched.a(sem_tickwait.o)
/source/NuttX/nuttx/staging/libsched.a(sched_get_stackinfo.o)
/source/NuttX/nuttx/staging/libsched.a(sched_getscheduler.o)
/source/NuttX/nuttx/staging/libsched.a(sched_getfiles.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_join.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_exit.o)
/source/NuttX/nuttx/staging/libsched.a(assert.o)
/source/NuttX/nuttx/staging/libsched.a(env_getenv.o)
/source/NuttX/nuttx/staging/libfs.a(fs_procfstcbinfo.o)
/source/NuttX/nuttx/staging/libfs.a(fs_open.o)
/source/NuttX/nuttx/staging/libfs.a(fs_files.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_smpcall.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_swint.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_irqdispatch.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_exit.o)
/source/NuttX/nuttx/staging/libarch.a(xtensa_assert.o)
/source/NuttX/nuttx/staging/libarch.a(esp32s3_intercpu_interrupt.o)
/source/NuttX/nuttx/staging/libarch.a(esp32s3_cpustart.o)
/source/NuttX/nuttx/staging/libarch.a(esp32s3_serial.o)
/source/NuttX/nuttx/staging/libarch.a(esp32s3_wdt.o)
/source/NuttX/nuttx/staging/libarch.a(esp32s3_irq.o)
/source/NuttX/nuttx/staging/libmm.a(mm_malloc.o)
/source/NuttX/nuttx/staging/libmm.a(mm_free.o)
/source/NuttX/nuttx/staging/libmm.a(mm_lock.o)
/source/NuttX/nuttx/staging/libmm.a(mm_map.o)
/source/NuttX/nuttx/staging/libsched.a(sig_action.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_mutex.o)
/source/NuttX/nuttx/staging/libsched.a(task_gettid.o)
/source/NuttX/nuttx/staging/libsched.a(task_terminate.o)
/source/NuttX/nuttx/staging/libsched.a(task_delete.o)
/source/NuttX/nuttx/staging/libsched.a(sem_post.o)
/source/NuttX/nuttx/staging/libsched.a(sem_wait.o)
/source/NuttX/nuttx/staging/libsched.a(sched_smp.o)
/source/NuttX/nuttx/staging/libsched.a(sched_lock.o)
/source/NuttX/nuttx/staging/libsched.a(sched_setpriority.o)
/source/NuttX/nuttx/staging/libsched.a(sched_setparam.o)
/source/NuttX/nuttx/staging/libsched.a(sched_addreadytorun.o)
/source/NuttX/nuttx/staging/libsched.a(pthread_cancel.o)
/source/NuttX/nuttx/staging/libsched.a(exit.o)
/source/NuttX/nuttx/staging/libsched.a(task_start.o)
/source/NuttX/nuttx/staging/libsched.a(task_activate.o)
/source/NuttX/nuttx/staging/libsched.a(task_setup.o)
/source/NuttX/nuttx/staging/libsched.a(sched_getparam.o)
/source/NuttX/nuttx/staging/libsched.a(sched_mergepending.o)
/source/NuttX/nuttx/staging/libsched.a(irq_csection.o)
/source/NuttX/nuttx/staging/libsched.a(group_setuptaskfiles.o)
/source/NuttX/nuttx/staging/libsched.a(env_unsetenv.o)
/source/NuttX/nuttx/staging/libsched.a(env_setenv.o)
/source/NuttX/nuttx/staging/libsched.a(env_getenvironptr.o)
/source/NuttX/nuttx/staging/libsched.a(sched_unlock.o)
```
This PR will change `up_cpu_index` to an inline function to improve the
performance.
## Impact
affects smp scenario
## Testing
tested `esp32s3-devkit:smp` and `esp32-devkitc:smp`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]