1999-04-16 09:35:26 +08:00
|
|
|
/* Generate targ-vals.h and targ-map.c. */
|
|
|
|
|
|
|
|
#include <stdio.h>
|
2006-11-08 03:29:59 +08:00
|
|
|
#include <stdlib.h>
|
2015-02-13 05:32:30 +08:00
|
|
|
#include <string.h>
|
1999-04-16 09:35:26 +08:00
|
|
|
|
|
|
|
struct tdefs {
|
|
|
|
char *symbol;
|
|
|
|
int value;
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct tdefs sys_tdefs[] = {
|
|
|
|
#define sys_defs
|
2016-01-10 16:50:08 +08:00
|
|
|
#include "nltvals.def"
|
1999-04-16 09:35:26 +08:00
|
|
|
#undef sys_defs
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct tdefs errno_tdefs[] = {
|
|
|
|
#define errno_defs
|
2016-01-10 16:50:08 +08:00
|
|
|
#include "nltvals.def"
|
1999-04-16 09:35:26 +08:00
|
|
|
#undef errno_defs
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct tdefs open_tdefs[] = {
|
|
|
|
#define open_defs
|
2016-01-10 16:50:08 +08:00
|
|
|
#include "nltvals.def"
|
1999-04-16 09:35:26 +08:00
|
|
|
#undef open_defs
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
|
|
|
static void
|
2015-03-16 14:13:31 +08:00
|
|
|
gen_targ_vals_h (void)
|
1999-04-16 09:35:26 +08:00
|
|
|
{
|
|
|
|
struct tdefs *t;
|
|
|
|
|
|
|
|
printf ("/* Target header values needed by the simulator and gdb. */\n");
|
|
|
|
printf ("/* This file is machine generated by gentmap.c. */\n\n");
|
|
|
|
|
|
|
|
printf ("#ifndef TARG_VALS_H\n");
|
|
|
|
printf ("#define TARG_VALS_H\n\n");
|
|
|
|
|
|
|
|
printf ("/* syscall values */\n");
|
|
|
|
for (t = &sys_tdefs[0]; t->symbol; ++t)
|
|
|
|
printf ("#define TARGET_%s %d\n", t->symbol, t->value);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("/* errno values */\n");
|
|
|
|
for (t = &errno_tdefs[0]; t->symbol; ++t)
|
|
|
|
printf ("#define TARGET_%s %d\n", t->symbol, t->value);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("/* open flag values */\n");
|
|
|
|
for (t = &open_tdefs[0]; t->symbol; ++t)
|
|
|
|
printf ("#define TARGET_%s 0x%x\n", t->symbol, t->value);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("#endif /* TARG_VALS_H */\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2015-03-16 14:13:31 +08:00
|
|
|
gen_targ_map_c (void)
|
1999-04-16 09:35:26 +08:00
|
|
|
{
|
|
|
|
struct tdefs *t;
|
|
|
|
|
|
|
|
printf ("/* Target value mapping utilities needed by the simulator and gdb. */\n");
|
|
|
|
printf ("/* This file is machine generated by gentmap.c. */\n\n");
|
|
|
|
|
2012-05-20 00:46:16 +08:00
|
|
|
printf ("#include \"config.h\"\n");
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("#include <errno.h>\n");
|
|
|
|
printf ("#include <fcntl.h>\n");
|
|
|
|
printf ("#include \"ansidecl.h\"\n");
|
2002-06-09 23:45:54 +08:00
|
|
|
printf ("#include \"gdb/callback.h\"\n");
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("#include \"targ-vals.h\"\n");
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("/* syscall mapping table */\n");
|
|
|
|
printf ("CB_TARGET_DEFS_MAP cb_init_syscall_map[] = {\n");
|
|
|
|
for (t = &sys_tdefs[0]; t->symbol; ++t)
|
|
|
|
{
|
|
|
|
printf ("#ifdef CB_%s\n", t->symbol);
|
2015-06-15 21:32:16 +08:00
|
|
|
/* Skip the "SYS_" prefix for the name. */
|
|
|
|
printf (" { \"%s\", CB_%s, TARGET_%s },\n", t->symbol + 4, t->symbol, t->symbol);
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("#endif\n");
|
|
|
|
}
|
2015-06-15 21:32:16 +08:00
|
|
|
printf (" { 0, -1, -1 }\n");
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("};\n\n");
|
|
|
|
|
|
|
|
printf ("/* errno mapping table */\n");
|
|
|
|
printf ("CB_TARGET_DEFS_MAP cb_init_errno_map[] = {\n");
|
|
|
|
for (t = &errno_tdefs[0]; t->symbol; ++t)
|
|
|
|
{
|
|
|
|
printf ("#ifdef %s\n", t->symbol);
|
2015-06-15 21:32:16 +08:00
|
|
|
printf (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol);
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("#endif\n");
|
|
|
|
}
|
2015-06-15 21:32:16 +08:00
|
|
|
printf (" { 0, 0, 0 }\n");
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("};\n\n");
|
|
|
|
|
|
|
|
printf ("/* open flags mapping table */\n");
|
|
|
|
printf ("CB_TARGET_DEFS_MAP cb_init_open_map[] = {\n");
|
|
|
|
for (t = &open_tdefs[0]; t->symbol; ++t)
|
|
|
|
{
|
|
|
|
printf ("#ifdef %s\n", t->symbol);
|
2015-06-15 21:32:16 +08:00
|
|
|
printf (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol);
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("#endif\n");
|
|
|
|
}
|
2015-06-15 21:32:16 +08:00
|
|
|
printf (" { 0, -1, -1 }\n");
|
1999-04-16 09:35:26 +08:00
|
|
|
printf ("};\n\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
2015-03-16 14:13:31 +08:00
|
|
|
main (int argc, char *argv[])
|
1999-04-16 09:35:26 +08:00
|
|
|
{
|
|
|
|
if (argc != 2)
|
|
|
|
abort ();
|
|
|
|
|
|
|
|
if (strcmp (argv[1], "-h") == 0)
|
|
|
|
gen_targ_vals_h ();
|
|
|
|
else if (strcmp (argv[1], "-c") == 0)
|
|
|
|
gen_targ_map_c ();
|
|
|
|
else
|
|
|
|
abort ();
|
|
|
|
|
|
|
|
exit (0);
|
|
|
|
}
|