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 2021/12/29 16:02:01 UTC

[GitHub] [incubator-nuttx] no1wudi opened a new pull request #5115: arch/risc-v: Refine syscall interface

no1wudi opened a new pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115


   ## Summary
   
   ## Impact
   Refactor only.
   ## Testing
   CI and rv32-virt:ostest
   


-- 
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



[GitHub] [incubator-nuttx] xiaoxiang781216 merged pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 merged pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115


   


-- 
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



[GitHub] [incubator-nuttx] no1wudi commented on a change in pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi commented on a change in pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#discussion_r776542692



##########
File path: arch/risc-v/src/rv32m1/Make.defs
##########
@@ -23,7 +23,7 @@
 HEAD_ASRC = rv32m1_vectors.S
 
 # Specify our general Assembly files
-CHIP_ASRCS = rv32m1_head.S riscv_syscall.S

Review comment:
       sys_call[x] series function on rv32im implemented in riscv_syscall.S, but in rv64gc they are inline functions in syscall.h




-- 
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



[GitHub] [incubator-nuttx] no1wudi removed a comment on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi removed a comment on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002954211


   @masayuki2009 @xiaoxiang781216 
   Hi, I find that this crash is caused by RISC-V's C extension , in riscv_syscall.S:
   ```
   sys_call0:	/* a0 holds the syscall number */		
    sys_call1:	/* a0 holds the syscall number, argument in a1 */		
    sys_call2:	/* a0 holds the syscall number, arguments in a1 and a2 */		
    sys_call3:	/* a0 holds the syscall number, arguments in a1, a2, and a3 */		
    sys_call4:	/* a0 holds the syscall number, arguments in a1, a2, a3 and a4 */		
    sys_call5:	/* a0 holds the syscall number, arguments in a1, a2, a3, a4 and a5 */		
   
     	/* Issue the ECALL opcode to perform a SW interrupt to the OS */		
   
     	ecall		
   
     	/* The actual interrupt may not a occur for a few more cycles.  Let's		
    	 * put a few nop's here in hope that the SW interrupt occurs during		
    	 * the sequence of nops.		
    	 */		
   
     	nop		
    	nop		
   
     	/* Then return with the result of the software interrupt in v0 */		
   
     	ret		
    	nop		
   ```
   All instruction use the normal 32bit instruction, but on some platform with C (Compressed instruction) support it would be 16bit, for FE310, you can adjust the mepc with 2 instead of 4:
   ```
   void *fe310_dispatch_irq(uint32_t vector, uint32_t *regs)
   {
     uint32_t  irq = (vector >> 27) | (vector & 0xf);
     uint32_t *mepc = regs;
   
     /* Firstly, check if the irq is machine external interrupt */
   
     if (FE310_IRQ_MEXT == irq)
       {
         uint32_t val = getreg32(FE310_PLIC_CLAIM);
   
         /* Add the value to nuttx irq which is offset to the mext */
   
         irq += val;
       }
   
     /* NOTE: In case of ecall, we need to adjust mepc in the context */
   
     if (FE310_IRQ_ECALLM == irq)
       {
         /* It should be 2 instead of 4 on target with C extension */
         *mepc += 4;
       }
    ...
   }
   ```
   @masayuki2009 Could you please have test ?
   


-- 
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



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#discussion_r776401369



##########
File path: arch/risc-v/include/common/syscall.h
##########
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/risc-v/include/rv64gc/syscall.h
+ * arch/risc-v/include/common/syscall.h

Review comment:
       let's move to the up level instead common folder.




-- 
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



[GitHub] [incubator-nuttx] no1wudi edited a comment on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi edited a comment on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002954211


   @masayuki2009 @xiaoxiang781216 
   Hi, I find that this crash is caused by RISC-V's C extension , in riscv_syscall.S:
   ```
   sys_call0:	/* a0 holds the syscall number */		
    sys_call1:	/* a0 holds the syscall number, argument in a1 */		
    sys_call2:	/* a0 holds the syscall number, arguments in a1 and a2 */		
    sys_call3:	/* a0 holds the syscall number, arguments in a1, a2, and a3 */		
    sys_call4:	/* a0 holds the syscall number, arguments in a1, a2, a3 and a4 */		
    sys_call5:	/* a0 holds the syscall number, arguments in a1, a2, a3, a4 and a5 */		
   
     	/* Issue the ECALL opcode to perform a SW interrupt to the OS */		
   
     	ecall		
   
     	/* The actual interrupt may not a occur for a few more cycles.  Let's		
    	 * put a few nop's here in hope that the SW interrupt occurs during		
    	 * the sequence of nops.		
    	 */		
   
     	nop		
    	nop		
   
     	/* Then return with the result of the software interrupt in v0 */		
   
     	ret		
    	nop		
   ```
   All instruction use the normal 32bit instruction, but on some platform with C (Compressed instruction) support it would be 16bit, for FE310, you can adjust the mepc with 2 instead of 4:
   ```
   void *fe310_dispatch_irq(uint32_t vector, uint32_t *regs)
   {
     uint32_t  irq = (vector >> 27) | (vector & 0xf);
     uint32_t *mepc = regs;
   
     /* Firstly, check if the irq is machine external interrupt */
   
     if (FE310_IRQ_MEXT == irq)
       {
         uint32_t val = getreg32(FE310_PLIC_CLAIM);
   
         /* Add the value to nuttx irq which is offset to the mext */
   
         irq += val;
       }
   
     /* NOTE: In case of ecall, we need to adjust mepc in the context */
   
     if (FE310_IRQ_ECALLM == irq)
       {
         /* It should be 2 instead of 4 on target with C extension */
         *mepc += 4;
       }
    ...
   }
   ```
   @masayuki2009 Could you please have test ?
   


-- 
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



[GitHub] [incubator-nuttx] no1wudi commented on a change in pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi commented on a change in pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#discussion_r776542539



##########
File path: arch/risc-v/include/common/syscall.h
##########
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/risc-v/include/rv64gc/syscall.h
+ * arch/risc-v/include/common/syscall.h

Review comment:
       Done




-- 
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



[GitHub] [incubator-nuttx] masayuki2009 commented on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
masayuki2009 commented on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002906719


   @no1wudi 
   
   Hmm, hifive1-revb:nsh with QEMU crashes with this PR.
   
   ```
   NuttShell (NSH) NuttX-10.2.0
   nsh> up_assert: Assertion failed at file:irq/irq_unexpectedisr.c line: 51 task: Idle Task
   riscv_registerdump: EPC:20403580
   riscv_registerdump: A0:00000002 A1:80000700 A2:800015c8 A3:80000818 A4:80001558 A5:00000014 A6:00000002 A7:00000003
   riscv_registerdump: T0:20400004 T1:00000000 T2:00000000 T3:00000000 T4:00000000 T5:00000000 T6:00000000
   riscv_registerdump: S0:80001558 S1:80000700 S2:80000000 S3:800007bc S4:80001000 S5:00000001 S6:00000000 S7:00000000
   riscv_registerdump: S8:00000000 S9:00000000 S10:00000000 S11:00000000
   riscv_registerdump: SP:80001030 FP:80001558 TP:00000000 RA:20403566
   riscv_dumpstate: sp:     800005c0
   riscv_dumpstate: IRQ stack:
   riscv_dumpstate:   base: 80000060
   riscv_dumpstate:   size: 00000600
   riscv_stackdump: 800005c0: 00000001 00000000 00000000 deadbeef deadbeef deadbeef 00000033 2040bc14
   riscv_stackdump: 800005e0: deadbeef deadbeef 00000000 00000000 00000000 00000001 80001000 800007bc
   riscv_stackdump: 80000600: 80000000 80000000 00000005 2040287c deadbeef deadbeef deadbeef 20400bb2
   riscv_stackdump: 80000620: deadbeef 80000000 0000000b 20400b76 deadbeef deadbeef deadbeef 2040011a
   riscv_stackdump: 80000640: deadbeef deadbeef deadbeef 80000fac deadbeef 80000700 20403580 2040008a
   riscv_dumpstate: sp:     80000660
   riscv_dumpstate: User stack:
   riscv_dumpstate:   base: 80000ac0
   riscv_dumpstate:   size: 000005e0
   riscv_dumpstate: ERROR: Stack pointer is not within allocated stack
   riscv_stackdump: 80000ac0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ae0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ba0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000bc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000be0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000f20: deadbeef 800007c8 fffffffc 20405f3a deadbeef 00000000 800007c8 20404c20
   riscv_stackdump: 80000f40: deadbeef 80001508 80000000 204020c8 00000001 00000000 00000000 80001758
   riscv_stackdump: 80000f60: 80001478 80001508 00000000 20404f4c 00000003 00000000 80001478 00000000
   riscv_stackdump: 80000f80: 00000001 800011b8 fffffffc 80001508 00000003 00000000 80000690 204013d0
   riscv_stackdump: 80000fa0: 00000000 00000006 8000159c 20403580 20403566 80001030 00000000 00000000
   riscv_stackdump: 80000fc0: 20400004 00000000 00000000 80001558 80000700 00000002 80000700 800015c8
   riscv_stackdump: 80000fe0: 80000818 80001558 00000014 00000002 00000003 80000000 800007bc 80001000
   riscv_stackdump: 80001000: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
   riscv_stackdump: 80001020: 00000000 00000000 00000000 00001800 80000000 80000700 80001558 20403566
   riscv_stackdump: 80001040: 800007f8 00000008 80000690 20400c5c 80000690 80001000 80000000 20400ace
   riscv_stackdump: 80001060: 00000000 00000000 800010a0 00002f60 00000000 00000000 00000000 00000000
   riscv_stackdump: 80001080: 00000000 00000000 00000000 20400188 00000000 00000000 00000000 20400026
   riscv_showtasks:    PID    PRI      USED     STACK   FILLED    COMMAND
   riscv_showtasks:   ----   ----       496      1536    32.2%    irq
   riscv_dump_task:      0      0       380      1504    25.2%    Idle Task
   riscv_dump_task:      1    100       612      1496    40.9%    nsh_main
   ```


-- 
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



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#discussion_r776404189



##########
File path: arch/risc-v/src/rv32m1/Make.defs
##########
@@ -23,7 +23,7 @@
 HEAD_ASRC = rv32m1_vectors.S
 
 # Specify our general Assembly files
-CHIP_ASRCS = rv32m1_head.S riscv_syscall.S

Review comment:
       why remove?




-- 
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



[GitHub] [incubator-nuttx] masayuki2009 edited a comment on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
masayuki2009 edited a comment on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002906719


   @no1wudi 
   
   Hmm, hifive1-revb:nsh with QEMU crashes with this PR.
   Could you please take a look at what is happening with this PR?
   
   ```
   NuttShell (NSH) NuttX-10.2.0
   nsh> up_assert: Assertion failed at file:irq/irq_unexpectedisr.c line: 51 task: Idle Task
   riscv_registerdump: EPC:20403580
   riscv_registerdump: A0:00000002 A1:80000700 A2:800015c8 A3:80000818 A4:80001558 A5:00000014 A6:00000002 A7:00000003
   riscv_registerdump: T0:20400004 T1:00000000 T2:00000000 T3:00000000 T4:00000000 T5:00000000 T6:00000000
   riscv_registerdump: S0:80001558 S1:80000700 S2:80000000 S3:800007bc S4:80001000 S5:00000001 S6:00000000 S7:00000000
   riscv_registerdump: S8:00000000 S9:00000000 S10:00000000 S11:00000000
   riscv_registerdump: SP:80001030 FP:80001558 TP:00000000 RA:20403566
   riscv_dumpstate: sp:     800005c0
   riscv_dumpstate: IRQ stack:
   riscv_dumpstate:   base: 80000060
   riscv_dumpstate:   size: 00000600
   riscv_stackdump: 800005c0: 00000001 00000000 00000000 deadbeef deadbeef deadbeef 00000033 2040bc14
   riscv_stackdump: 800005e0: deadbeef deadbeef 00000000 00000000 00000000 00000001 80001000 800007bc
   riscv_stackdump: 80000600: 80000000 80000000 00000005 2040287c deadbeef deadbeef deadbeef 20400bb2
   riscv_stackdump: 80000620: deadbeef 80000000 0000000b 20400b76 deadbeef deadbeef deadbeef 2040011a
   riscv_stackdump: 80000640: deadbeef deadbeef deadbeef 80000fac deadbeef 80000700 20403580 2040008a
   riscv_dumpstate: sp:     80000660
   riscv_dumpstate: User stack:
   riscv_dumpstate:   base: 80000ac0
   riscv_dumpstate:   size: 000005e0
   riscv_dumpstate: ERROR: Stack pointer is not within allocated stack
   riscv_stackdump: 80000ac0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ae0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000b80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ba0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000bc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000be0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   riscv_stackdump: 80000f20: deadbeef 800007c8 fffffffc 20405f3a deadbeef 00000000 800007c8 20404c20
   riscv_stackdump: 80000f40: deadbeef 80001508 80000000 204020c8 00000001 00000000 00000000 80001758
   riscv_stackdump: 80000f60: 80001478 80001508 00000000 20404f4c 00000003 00000000 80001478 00000000
   riscv_stackdump: 80000f80: 00000001 800011b8 fffffffc 80001508 00000003 00000000 80000690 204013d0
   riscv_stackdump: 80000fa0: 00000000 00000006 8000159c 20403580 20403566 80001030 00000000 00000000
   riscv_stackdump: 80000fc0: 20400004 00000000 00000000 80001558 80000700 00000002 80000700 800015c8
   riscv_stackdump: 80000fe0: 80000818 80001558 00000014 00000002 00000003 80000000 800007bc 80001000
   riscv_stackdump: 80001000: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
   riscv_stackdump: 80001020: 00000000 00000000 00000000 00001800 80000000 80000700 80001558 20403566
   riscv_stackdump: 80001040: 800007f8 00000008 80000690 20400c5c 80000690 80001000 80000000 20400ace
   riscv_stackdump: 80001060: 00000000 00000000 800010a0 00002f60 00000000 00000000 00000000 00000000
   riscv_stackdump: 80001080: 00000000 00000000 00000000 20400188 00000000 00000000 00000000 20400026
   riscv_showtasks:    PID    PRI      USED     STACK   FILLED    COMMAND
   riscv_showtasks:   ----   ----       496      1536    32.2%    irq
   riscv_dump_task:      0      0       380      1504    25.2%    Idle Task
   riscv_dump_task:      1    100       612      1496    40.9%    nsh_main
   ```


-- 
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



[GitHub] [incubator-nuttx] no1wudi commented on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi commented on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002961796


   @masayuki2009 Please take a look : #5123 


-- 
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



[GitHub] [incubator-nuttx] no1wudi commented on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi commented on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002914334


   > @no1wudi
   > 
   > Hmm, hifive1-revb:nsh with QEMU crashes with this PR. Could you please take a look at what is happening with this PR?
   > 
   > ```
   > NuttShell (NSH) NuttX-10.2.0
   > nsh> up_assert: Assertion failed at file:irq/irq_unexpectedisr.c line: 51 task: Idle Task
   > riscv_registerdump: EPC:20403580
   > riscv_registerdump: A0:00000002 A1:80000700 A2:800015c8 A3:80000818 A4:80001558 A5:00000014 A6:00000002 A7:00000003
   > riscv_registerdump: T0:20400004 T1:00000000 T2:00000000 T3:00000000 T4:00000000 T5:00000000 T6:00000000
   > riscv_registerdump: S0:80001558 S1:80000700 S2:80000000 S3:800007bc S4:80001000 S5:00000001 S6:00000000 S7:00000000
   > riscv_registerdump: S8:00000000 S9:00000000 S10:00000000 S11:00000000
   > riscv_registerdump: SP:80001030 FP:80001558 TP:00000000 RA:20403566
   > riscv_dumpstate: sp:     800005c0
   > riscv_dumpstate: IRQ stack:
   > riscv_dumpstate:   base: 80000060
   > riscv_dumpstate:   size: 00000600
   > riscv_stackdump: 800005c0: 00000001 00000000 00000000 deadbeef deadbeef deadbeef 00000033 2040bc14
   > riscv_stackdump: 800005e0: deadbeef deadbeef 00000000 00000000 00000000 00000001 80001000 800007bc
   > riscv_stackdump: 80000600: 80000000 80000000 00000005 2040287c deadbeef deadbeef deadbeef 20400bb2
   > riscv_stackdump: 80000620: deadbeef 80000000 0000000b 20400b76 deadbeef deadbeef deadbeef 2040011a
   > riscv_stackdump: 80000640: deadbeef deadbeef deadbeef 80000fac deadbeef 80000700 20403580 2040008a
   > riscv_dumpstate: sp:     80000660
   > riscv_dumpstate: User stack:
   > riscv_dumpstate:   base: 80000ac0
   > riscv_dumpstate:   size: 000005e0
   > riscv_dumpstate: ERROR: Stack pointer is not within allocated stack
   > riscv_stackdump: 80000ac0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ae0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ba0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000bc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000be0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000f20: deadbeef 800007c8 fffffffc 20405f3a deadbeef 00000000 800007c8 20404c20
   > riscv_stackdump: 80000f40: deadbeef 80001508 80000000 204020c8 00000001 00000000 00000000 80001758
   > riscv_stackdump: 80000f60: 80001478 80001508 00000000 20404f4c 00000003 00000000 80001478 00000000
   > riscv_stackdump: 80000f80: 00000001 800011b8 fffffffc 80001508 00000003 00000000 80000690 204013d0
   > riscv_stackdump: 80000fa0: 00000000 00000006 8000159c 20403580 20403566 80001030 00000000 00000000
   > riscv_stackdump: 80000fc0: 20400004 00000000 00000000 80001558 80000700 00000002 80000700 800015c8
   > riscv_stackdump: 80000fe0: 80000818 80001558 00000014 00000002 00000003 80000000 800007bc 80001000
   > riscv_stackdump: 80001000: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
   > riscv_stackdump: 80001020: 00000000 00000000 00000000 00001800 80000000 80000700 80001558 20403566
   > riscv_stackdump: 80001040: 800007f8 00000008 80000690 20400c5c 80000690 80001000 80000000 20400ace
   > riscv_stackdump: 80001060: 00000000 00000000 800010a0 00002f60 00000000 00000000 00000000 00000000
   > riscv_stackdump: 80001080: 00000000 00000000 00000000 20400188 00000000 00000000 00000000 20400026
   > riscv_showtasks:    PID    PRI      USED     STACK   FILLED    COMMAND
   > riscv_showtasks:   ----   ----       496      1536    32.2%    irq
   > riscv_dump_task:      0      0       380      1504    25.2%    Idle Task
   > riscv_dump_task:      1    100       612      1496    40.9%    nsh_main
   > ```
   
   Get it, let me have a check


-- 
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



[GitHub] [incubator-nuttx] no1wudi removed a comment on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi removed a comment on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002914334


   > @no1wudi
   > 
   > Hmm, hifive1-revb:nsh with QEMU crashes with this PR. Could you please take a look at what is happening with this PR?
   > 
   > ```
   > NuttShell (NSH) NuttX-10.2.0
   > nsh> up_assert: Assertion failed at file:irq/irq_unexpectedisr.c line: 51 task: Idle Task
   > riscv_registerdump: EPC:20403580
   > riscv_registerdump: A0:00000002 A1:80000700 A2:800015c8 A3:80000818 A4:80001558 A5:00000014 A6:00000002 A7:00000003
   > riscv_registerdump: T0:20400004 T1:00000000 T2:00000000 T3:00000000 T4:00000000 T5:00000000 T6:00000000
   > riscv_registerdump: S0:80001558 S1:80000700 S2:80000000 S3:800007bc S4:80001000 S5:00000001 S6:00000000 S7:00000000
   > riscv_registerdump: S8:00000000 S9:00000000 S10:00000000 S11:00000000
   > riscv_registerdump: SP:80001030 FP:80001558 TP:00000000 RA:20403566
   > riscv_dumpstate: sp:     800005c0
   > riscv_dumpstate: IRQ stack:
   > riscv_dumpstate:   base: 80000060
   > riscv_dumpstate:   size: 00000600
   > riscv_stackdump: 800005c0: 00000001 00000000 00000000 deadbeef deadbeef deadbeef 00000033 2040bc14
   > riscv_stackdump: 800005e0: deadbeef deadbeef 00000000 00000000 00000000 00000001 80001000 800007bc
   > riscv_stackdump: 80000600: 80000000 80000000 00000005 2040287c deadbeef deadbeef deadbeef 20400bb2
   > riscv_stackdump: 80000620: deadbeef 80000000 0000000b 20400b76 deadbeef deadbeef deadbeef 2040011a
   > riscv_stackdump: 80000640: deadbeef deadbeef deadbeef 80000fac deadbeef 80000700 20403580 2040008a
   > riscv_dumpstate: sp:     80000660
   > riscv_dumpstate: User stack:
   > riscv_dumpstate:   base: 80000ac0
   > riscv_dumpstate:   size: 000005e0
   > riscv_dumpstate: ERROR: Stack pointer is not within allocated stack
   > riscv_stackdump: 80000ac0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ae0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000b80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ba0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000bc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000be0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
   > riscv_stackdump: 80000f20: deadbeef 800007c8 fffffffc 20405f3a deadbeef 00000000 800007c8 20404c20
   > riscv_stackdump: 80000f40: deadbeef 80001508 80000000 204020c8 00000001 00000000 00000000 80001758
   > riscv_stackdump: 80000f60: 80001478 80001508 00000000 20404f4c 00000003 00000000 80001478 00000000
   > riscv_stackdump: 80000f80: 00000001 800011b8 fffffffc 80001508 00000003 00000000 80000690 204013d0
   > riscv_stackdump: 80000fa0: 00000000 00000006 8000159c 20403580 20403566 80001030 00000000 00000000
   > riscv_stackdump: 80000fc0: 20400004 00000000 00000000 80001558 80000700 00000002 80000700 800015c8
   > riscv_stackdump: 80000fe0: 80000818 80001558 00000014 00000002 00000003 80000000 800007bc 80001000
   > riscv_stackdump: 80001000: 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000
   > riscv_stackdump: 80001020: 00000000 00000000 00000000 00001800 80000000 80000700 80001558 20403566
   > riscv_stackdump: 80001040: 800007f8 00000008 80000690 20400c5c 80000690 80001000 80000000 20400ace
   > riscv_stackdump: 80001060: 00000000 00000000 800010a0 00002f60 00000000 00000000 00000000 00000000
   > riscv_stackdump: 80001080: 00000000 00000000 00000000 20400188 00000000 00000000 00000000 20400026
   > riscv_showtasks:    PID    PRI      USED     STACK   FILLED    COMMAND
   > riscv_showtasks:   ----   ----       496      1536    32.2%    irq
   > riscv_dump_task:      0      0       380      1504    25.2%    Idle Task
   > riscv_dump_task:      1    100       612      1496    40.9%    nsh_main
   > ```
   
   Get it, let me have a check


-- 
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



[GitHub] [incubator-nuttx] no1wudi commented on pull request #5115: arch/risc-v: Refine syscall interface

Posted by GitBox <gi...@apache.org>.
no1wudi commented on pull request #5115:
URL: https://github.com/apache/incubator-nuttx/pull/5115#issuecomment-1002954211


   @masayuki2009 @xiaoxiang781216 
   Hi, I find that this crash is caused by RISC-V's C extension , in riscv_syscall.S:
   ```
   sys_call0:	/* a0 holds the syscall number */		
    sys_call1:	/* a0 holds the syscall number, argument in a1 */		
    sys_call2:	/* a0 holds the syscall number, arguments in a1 and a2 */		
    sys_call3:	/* a0 holds the syscall number, arguments in a1, a2, and a3 */		
    sys_call4:	/* a0 holds the syscall number, arguments in a1, a2, a3 and a4 */		
    sys_call5:	/* a0 holds the syscall number, arguments in a1, a2, a3, a4 and a5 */		
   
     	/* Issue the ECALL opcode to perform a SW interrupt to the OS */		
   
     	ecall		
   
     	/* The actual interrupt may not a occur for a few more cycles.  Let's		
    	 * put a few nop's here in hope that the SW interrupt occurs during		
    	 * the sequence of nops.		
    	 */		
   
     	nop		
    	nop		
   
     	/* Then return with the result of the software interrupt in v0 */		
   
     	ret		
    	nop		
   ```
   All instruction use the normal 32bit instruction, but on some platform with C (Compressed instruction) support it would be 16bit, for FE310, you can adjust the mepc with 2 instead of 4:
   ```
   void *fe310_dispatch_irq(uint32_t vector, uint32_t *regs)
   {
     uint32_t  irq = (vector >> 27) | (vector & 0xf);
     uint32_t *mepc = regs;
   
     /* Firstly, check if the irq is machine external interrupt */
   
     if (FE310_IRQ_MEXT == irq)
       {
         uint32_t val = getreg32(FE310_PLIC_CLAIM);
   
         /* Add the value to nuttx irq which is offset to the mext */
   
         irq += val;
       }
   
     /* NOTE: In case of ecall, we need to adjust mepc in the context */
   
     if (FE310_IRQ_ECALLM == irq)
       {
         /* It should be 2 instead of 4 on target with C extension */
         *mepc += 4;
       }
    ...
   }
   ```
   @masayuki2009 Could you please have test ?
   
   I intend to use hand write assembly file like the file removed in this PR to get explicit size instead of depend on the behavior of compiler, how about this idea ? @xiaoxiang781216 @masayuki2009 


-- 
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