mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 18:23:57 -06:00
tests/tcg/cris: cleanup sys.c
This is a mini library which provides helper functions to the tests which are all currently written in assembly. A bunch of minor changes: - removed libc related headers (fedora-cris-cross is a system compiler) - re-organised the functions to avoid forward declarations - cleaned up brace usage - restored exit for _fail case - removed tabs and fixed indentation Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
824ad15f1c
commit
6b970dd62c
1 changed files with 53 additions and 49 deletions
|
@ -1,59 +1,63 @@
|
||||||
#include <stdio.h>
|
/*
|
||||||
#include <stdlib.h>
|
* Helper functions for CRIS system tests
|
||||||
#include <unistd.h>
|
*
|
||||||
|
* There is no libc and only a limited set of headers.
|
||||||
|
*/
|
||||||
|
|
||||||
static inline int mystrlen(char *s) {
|
#include <stddef.h>
|
||||||
int i = 0;
|
|
||||||
while (s[i])
|
void exit(int status)
|
||||||
i++;
|
{
|
||||||
return i;
|
register unsigned int callno asm ("r9") = 1; /* NR_exit */
|
||||||
|
|
||||||
|
asm volatile ("break 13\n"
|
||||||
|
: /* no outputs */
|
||||||
|
: "r" (callno)
|
||||||
|
: "memory");
|
||||||
|
while (1) {
|
||||||
|
/* do nothing */
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void pass(void) {
|
size_t write(int fd, const void *buf, size_t count)
|
||||||
char s[] = "passed.\n";
|
{
|
||||||
write (1, s, sizeof (s) - 1);
|
register unsigned int callno asm ("r9") = 4; /* NR_write */
|
||||||
exit (0);
|
register unsigned int r10 asm ("r10") = fd;
|
||||||
|
register const void *r11 asm ("r11") = buf;
|
||||||
|
register size_t r12 asm ("r12") = count;
|
||||||
|
register unsigned int r asm ("r10");
|
||||||
|
|
||||||
|
asm volatile ("break 13\n"
|
||||||
|
: "=r" (r)
|
||||||
|
: "r" (callno), "0" (r10), "r" (r11), "r" (r12)
|
||||||
|
: "memory");
|
||||||
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _fail(char *reason) {
|
static inline int mystrlen(char *s)
|
||||||
char s[] = "\nfailed: ";
|
{
|
||||||
int len = mystrlen(reason);
|
int i = 0;
|
||||||
write (1, s, sizeof (s) - 1);
|
while (s[i]) {
|
||||||
write (1, reason, len);
|
i++;
|
||||||
write (1, "\n", 1);
|
}
|
||||||
// exit (1);
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *memset (void *s, int c, size_t n) {
|
|
||||||
char *p = s;
|
void pass(void)
|
||||||
int i;
|
{
|
||||||
for (i = 0; i < n; i++)
|
char s[] = "passed.\n";
|
||||||
p[i] = c;
|
write(1, s, sizeof(s) - 1);
|
||||||
return p;
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit (int status) {
|
void _fail(char *reason)
|
||||||
register unsigned int callno asm ("r9") = 1; /* NR_exit */
|
{
|
||||||
|
char s[] = "\nfailed: ";
|
||||||
asm volatile ("break 13\n"
|
int len = mystrlen(reason);
|
||||||
:
|
write(1, s, sizeof(s) - 1);
|
||||||
: "r" (callno)
|
write(1, reason, len);
|
||||||
: "memory" );
|
write(1, "\n", 1);
|
||||||
while(1)
|
exit(1);
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t write (int fd, const void *buf, size_t count) {
|
|
||||||
register unsigned int callno asm ("r9") = 4; /* NR_write */
|
|
||||||
register unsigned int r10 asm ("r10") = fd;
|
|
||||||
register const void *r11 asm ("r11") = buf;
|
|
||||||
register size_t r12 asm ("r12") = count;
|
|
||||||
register unsigned int r asm ("r10");
|
|
||||||
|
|
||||||
asm volatile ("break 13\n"
|
|
||||||
: "=r" (r)
|
|
||||||
: "r" (callno), "0" (r10), "r" (r11), "r" (r12)
|
|
||||||
: "memory");
|
|
||||||
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue