This is an automated email from Gerrit. Brandon Warhurst ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/1345
-- gerrit commit 768f393010d098115dad81eec6f3ce2a0ac3ccdf Author: Brandon Warhurst <[email protected]> Date: Thu Apr 18 14:05:26 2013 -0400 Added functionality to the SYS_SYSTEM semihosting call. Change-Id: Ie17dc96c6d48227a3dc9ff1e21201a85498a10b1 Signed-off-by: Brandon Warhurst <[email protected]> diff --git a/src/target/arm_semihosting.c b/src/target/arm_semihosting.c index 115c7d4..238a199 100644 --- a/src/target/arm_semihosting.c +++ b/src/target/arm_semihosting.c @@ -374,9 +374,37 @@ static int do_semihosting(struct target *target) } return target_call_event_callbacks(target, TARGET_EVENT_HALTED); + case 0x12: /* SYS_SYSTEM */ + /* Provide SYS_SYSTEM functionality. Uses the + * libc system command, there may be a reason *NOT* + * to use this, but as I can't think of one, I + * implemented it this way. + */ + retval = target_read_memory(target, r1, 4, 2, params); + if (retval != ERROR_OK) + return retval; + else { + //printf ("Reading from address 0x%08x\n",r1); + //printf ("Got a system command[0x%08x,0x%08x]\n",*(unsigned int *)params,*(unsigned int *)(params+4)); + uint32_t len = target_buffer_get_u32(target, params+4); + uint32_t c_ptr = target_buffer_get_u32(target, params); + uint8_t cmd[256]; + //printf ("Got a system command[0x%08x,0x%08x]\n",c_ptr,len); + if(len > 255) { + result = -1; + arm->semihosting_errno = EINVAL; + } else { + memset(cmd,0x0,256); + retval = target_read_memory(target, c_ptr, 1, len, cmd); + if (retval != ERROR_OK) + return retval; + else + result = system((const char *)cmd); + } + } + break; case 0x0d: /* SYS_TMPNAM */ case 0x10: /* SYS_CLOCK */ - case 0x12: /* SYS_SYSTEM */ case 0x17: /* angel_SWIreason_EnterSVC */ case 0x30: /* SYS_ELAPSED */ case 0x31: /* SYS_TICKFREQ */ -- ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
