You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2022/05/20 16:50:43 UTC
[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a diff in pull request #6302: xtensa: coproc: modify coproc_save/restore to macro
xiaoxiang781216 commented on code in PR #6302:
URL: https://github.com/apache/incubator-nuttx/pull/6302#discussion_r878349648
##########
arch/xtensa/src/common/xtensa_coproc.S:
##########
@@ -89,31 +85,18 @@ _xtensa_coproc_saoffsets:
* around the assembly language call to _xtensa_coproc_savestate.
*
* Entry Conditions:
- * - A2 holds the address of current interrupt stack pointer.
+ * in - Pointer to where the save is performed (e.g. a2)
* - Registers have been saved/spilled already.
*
* Exit conditions:
* - All necessary CP callee-saved state has been saved.
- * - Registers a2-a7, a13-a15 have been trashed.
- *
- * Must be called from assembly code only, using CALL0.
+ * - Registers a2-a7, a13-a14 have been trashed.
*
****************************************************************************/
- .global _xtensa_coproc_savestate
- .type _xtensa_coproc_savestate, @function
-
- .align 4
- .literal_position
- .align 4
-
-_xtensa_coproc_savestate:
-
- /* Move the address of the thread state save area to R15 */
+ .macro xtensa_coproc_savestate in
Review Comment:
why need in argument? Since xtensa_coproc_savestate already touch many registers(a2-a7, a13-a14), we can directly:
```
.macro xtensa_coproc_savestate
add a3, sp, (4 * XCPTCONTEXT_REGS)
```
and keep the rest unchanged.
##########
arch/xtensa/src/common/xtensa_context.S:
##########
@@ -66,6 +66,7 @@
#include <arch/xtensa/xtensa_abi.h>
#include <arch/xtensa/xtensa_specregs.h>
+#include "xtensa_coproc.S"
Review Comment:
move after line 71
##########
arch/xtensa/src/common/xtensa_coproc.S:
##########
@@ -216,28 +198,15 @@ _xtensa_coproc_savestate:
* around the assembly language call to _xtensa_coproc_restorestate.
*
* Entry Conditions:
- * - A2 holds the address of the current interrupt stack pointer.
+ * in - Pointer to where the save is performed (e.g. a2)
*
* Exit conditions:
* - All necessary CP callee-saved state has been restored.
- * - Registers a2-a7, a13-a15 have been trashed.
- *
- * Must be called from assembly code only, using CALL0.
+ * - Registers a2-a7, a13-a14 have been trashed.
*
****************************************************************************/
- .global _xtensa_coproc_restorestate
- .type _xtensa_coproc_restorestate, @function
-
- .align 4
- .literal_position
- .align 4
-
-_xtensa_coproc_restorestate:
-
- /* Move the address of the thread state save area to R15 */
-
- mov a3, a2 /* A3 is now the address of the save area */
+ .macro xtensa_coproc_restorestate out
Review Comment:
ditto, let's:
```
.macro xtensa_coproc_restorestate
addi a3, a2, (4 * XCPTCONTEXT_REGS)
```
and keep the rest unchanged.
--
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: commits-unsubscribe@nuttx.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org