I am including some syscall functions: int _fstat(int file, struct stat* st) { register int value asm("r0"); uint32_t p[] = { file }; R0(0x0C); R1(p); BKPT(); return value; }
int _read(int file, char* ptr, int len) { register int value asm("r0"); uint32_t p[] = { file, (uint32_t)(ptr), len }; R0(0x06); R1(p); BKPT(); return value; } int _write(int file, char* ptr, int len) { register int value asm("r0"); uint32_t p[] = { file, (uint32_t)(ptr), len }; R0(0x05); R1(p); BKPT(); return value; } Also the interruption output from execution: $ qemu-system-arm -M netduino2 -nographic -semihosting -kernel vp2.bin -d int Taking exception 16 [Semihosting call] ...handling as semihosting call 0x1 Taking exception 16 [Semihosting call] ...handling as semihosting call 0x1 Taking exception 16 [Semihosting call] ...handling as semihosting call 0x1 Taking exception 16 [Semihosting call] ...handling as semihosting call 0x1 Taking exception 16 [Semihosting call] ...handling as semihosting call 0xc Taking exception 16 [Semihosting call] ...handling as semihosting call 0x5 What is your name? Taking exception 16 [Semihosting call] ...handling as semihosting call 0x5 Reading from file... Taking exception 16 [Semihosting call] ...handling as semihosting call 0xc Taking exception 16 [Semihosting call] ...handling as semihosting call 0x6 Taking exception 16 [Semihosting call] ...handling as semihosting call 0xc Taking exception 16 [Semihosting call] ...handling as semihosting call 0x6 Taking exception 16 [Semihosting call] ...handling as semihosting call 0x5 My name is Turing Taking exception 16 [Semihosting call] ...handling as semihosting call 0x5 I am alive!!! Taking exception 16 [Semihosting call] ...handling as semihosting call 0xa Taking exception 16 [Semihosting call] ...handling as semihosting call 0xa Taking exception 16 [Semihosting call] ...handling as semihosting call 0x2 Taking exception 16 [Semihosting call] ...handling as semihosting call 0x20 Could you please provide any working example using ARM semihosting on stdin? Thanks, ---- Bruno Prado On Fri, Oct 2, 2020 at 7:25 AM Peter Maydell <peter.mayd...@linaro.org> wrote: > On Thu, 1 Oct 2020 at 22:21, Bruno Prado <br...@dcomp.ufs.br> wrote: > > Thanks for the reply... I am attaching some code and output: > > > > #include <stdio.h> > > int main() { > > char name[50] = "Nobody"; > > FILE* file = fopen("name", "r"); > > printf("What is your name?\n"); > > fprintf(stdout, "Reading from file...\n"); > > fscanf(file, "%s", name); > > fscanf(stdin, "%s", name); > > printf("My name is %s\n", name); > > fprintf(stderr, "I am alive!!!\n"); > > fclose(file); > > return 0; > > } > > This is not making direct semihosting calls. The behaviour > of these function calls will depend on whatever the C > standard library implementation you're linking with is doing. > > You're not checking for errors from any of your function > calls, incidentally. > > thanks > -- PMM >