Merge branch 'master' of https://github.com/RetroBSD/retrobsd
This commit is contained in:
@@ -54,49 +54,51 @@
|
||||
|
||||
#define RAND_MAX 0x7fff
|
||||
|
||||
void abort();
|
||||
void abort (void);
|
||||
int abs (int);
|
||||
int atexit (void (*)(void));
|
||||
double atof();
|
||||
int atoi();
|
||||
long atol();
|
||||
int atoi (const char *);
|
||||
long atol (const char *);
|
||||
void *calloc (size_t, size_t);
|
||||
void exit (int);
|
||||
void free (void *);
|
||||
char *getenv();
|
||||
char *getenv (const char *);
|
||||
long labs (long);
|
||||
void *malloc (size_t);
|
||||
char *mktemp (char *);
|
||||
int mkstemp (char *);
|
||||
void qsort();
|
||||
int rand();
|
||||
void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
|
||||
int rand (void);
|
||||
void *realloc (void*, size_t);
|
||||
void srand();
|
||||
double strtod();
|
||||
long strtol();
|
||||
unsigned long strtoul();
|
||||
int system();
|
||||
void srand (unsigned);
|
||||
long strtol (const char *, char **, int);
|
||||
unsigned long strtoul (const char *, char **, int);
|
||||
int system (const char *);
|
||||
|
||||
int putenv (char *string);
|
||||
int setenv (const char *name, const char *value, int overwrite);
|
||||
int unsetenv (const char *name);
|
||||
char *_findenv (const char *name, int *offset);
|
||||
|
||||
void *alloca();
|
||||
void *alloca (size_t size);
|
||||
|
||||
int daemon();
|
||||
char *devname();
|
||||
int getloadavg(unsigned loadavg[], int nelem);
|
||||
int daemon (int, int);
|
||||
char *devname (dev_t dev, mode_t type);
|
||||
int getloadavg (unsigned loadavg[], int nelem);
|
||||
|
||||
extern char *suboptarg; /* getsubopt(3) external variable */
|
||||
int getsubopt();
|
||||
int getsubopt (char **, char **, char **);
|
||||
|
||||
long random (void);
|
||||
char *setstate (char *);
|
||||
void srandom (unsigned);
|
||||
|
||||
char *ecvt (double, int, int *, int *);
|
||||
char *fcvt (double, int, int *, int *);
|
||||
char *gcvt (double, int, char *);
|
||||
#ifndef __SMALLER_C__
|
||||
double atof (const char *);
|
||||
double strtod (const char *, char **);
|
||||
char *ecvt (double, int, int *, int *);
|
||||
char *fcvt (double, int, int *, int *);
|
||||
char *gcvt (double, int, char *);
|
||||
#endif
|
||||
|
||||
#endif /* _STDLIB_H_ */
|
||||
|
||||
@@ -1238,7 +1238,7 @@ void emitword (w, r, clobber_reg)
|
||||
reorder_word = w;
|
||||
reorder_rel = *r;
|
||||
reorder_full = 1;
|
||||
reorder_clobber = clobber_reg;
|
||||
reorder_clobber = clobber_reg & 15;
|
||||
} else {
|
||||
fputword (w, sfile[segm]);
|
||||
fputrel (r, rfile[segm]);
|
||||
@@ -1317,10 +1317,9 @@ void makecmd (opcode, type, emitfunc)
|
||||
unsigned opcode;
|
||||
void (*emitfunc) (unsigned, struct reloc*);
|
||||
{
|
||||
register int clex;
|
||||
register unsigned offset;
|
||||
unsigned offset, orig_opcode = 0;
|
||||
struct reloc relinfo;
|
||||
int cval, segment, clobber_reg, negate_literal;
|
||||
int clex, cval, segment, clobber_reg, negate_literal;
|
||||
|
||||
offset = 0;
|
||||
relinfo.flags = RABS;
|
||||
@@ -1480,6 +1479,7 @@ frs1: clex = getlex (&cval);
|
||||
cval = (opcode >> 11) & 31; /* get 1-st register */
|
||||
newop |= cval << 16; /* set 1-st register */
|
||||
newop |= opcode & (31 << 21); /* set 2-nd register */
|
||||
orig_opcode = opcode;
|
||||
opcode = newop;
|
||||
type = FRT1 | FRS2 | FOFF16 | FMOD;
|
||||
goto foff16;
|
||||
@@ -1572,6 +1572,8 @@ fsa: offset = getexpr (&segment);
|
||||
}
|
||||
} else if (type & (FOFF16 | FOFF18 | FAOFF18 | FAOFF28 | FHIGH16)) {
|
||||
/* Relocatable offset */
|
||||
int valid_range;
|
||||
|
||||
if ((type & (FOFF16 | FOFF18 | FHIGH16)) && getlex (&cval) != ',')
|
||||
uerror ("comma expected");
|
||||
foff16: expr_flags = 0;
|
||||
@@ -1589,7 +1591,44 @@ foff16: expr_flags = 0;
|
||||
relinfo.flags |= RGPREL;
|
||||
switch (type & (FOFF16 | FOFF18 | FAOFF18 | FAOFF28 | FHIGH16)) {
|
||||
case FOFF16: /* low 16-bit byte address */
|
||||
opcode |= offset & 0xffff;
|
||||
/* Test whether the immediate is in valid range
|
||||
* for the opcode. */
|
||||
switch (opcode & 0xfc000000) {
|
||||
default: /* addi, addiu, slti, sltiu, lw, sw */
|
||||
/* 16-bit signed value. */
|
||||
valid_range = (offset >= -0x8000) || (offset <= 0x7fff);
|
||||
break;
|
||||
case 0x30000000: /* andi */
|
||||
case 0x34000000: /* ori */
|
||||
case 0x38000000: /* xori */
|
||||
/* 16-bit unsigned value. */
|
||||
valid_range = (offset <= 0xffff);
|
||||
break;
|
||||
}
|
||||
if (valid_range) {
|
||||
opcode |= offset & 0xffff;
|
||||
} else if (orig_opcode == 0 || ! mode_at) {
|
||||
uerror ("value out of range");
|
||||
} else {
|
||||
/* Convert back to 3-reg opcode.
|
||||
* Insert an extra LI instruction. */
|
||||
if (segment != SABS)
|
||||
uerror ("absolute value required");
|
||||
|
||||
if (offset <= 0xffff) {
|
||||
/* ori $1, $zero, value */
|
||||
emitword (0x34010000 | offset, &relabs, 1);
|
||||
} else if (offset >= -0x8000) {
|
||||
/* addiu $1, $zero, value */
|
||||
emitword (0x24010000 | (offset & 0xffff), &relabs, 1);
|
||||
} else {
|
||||
/* lui $1, value[31:16]
|
||||
* ori $1, $1, value[15:0]) */
|
||||
emitword (0x3c010000 | (offset >> 16), &relabs, 1);
|
||||
emitword (0x34210000 | (offset & 0xffff), &relabs, 1);
|
||||
}
|
||||
opcode = orig_opcode | 0x10000;
|
||||
}
|
||||
break;
|
||||
case FHIGH16: /* high 16-bit byte address */
|
||||
if (expr_flags & EXPR_HI) {
|
||||
|
||||
@@ -26,4 +26,4 @@ clean:
|
||||
install: all
|
||||
install cc $(DESTDIR)/bin/
|
||||
install cc $(DESTDIR)/bin/scc
|
||||
install cc $(DESTDIR)/bin/srcc
|
||||
install cc $(DESTDIR)/bin/lcc
|
||||
|
||||
@@ -449,17 +449,16 @@ main(int argc, char *argv[])
|
||||
pass0 = LIBEXECDIR "/smallc";
|
||||
incdir = STDINC "/smallc";
|
||||
|
||||
} else if (strcmp ("srcc", progname) == 0) {
|
||||
/* Smaller C. */
|
||||
mode = MODE_SMALLERC;
|
||||
cppadd[0] = "-D__SMALLER_C__";
|
||||
pass0 = LIBEXECDIR "/smlrc";
|
||||
incdir = STDINC "/smallerc";
|
||||
} else {
|
||||
} else if (strcmp ("lcc", progname) == 0) {
|
||||
/* LCC: retargetable C compiler. */
|
||||
mode = MODE_LCC;
|
||||
cppadd[0] = "-D__LCC__";
|
||||
pass0 = LIBEXECDIR "/lccom";
|
||||
} else {
|
||||
/* Smaller C. */
|
||||
mode = MODE_SMALLERC;
|
||||
cppadd[0] = "-D__SMALLER_C__";
|
||||
pass0 = LIBEXECDIR "/smlrc";
|
||||
}
|
||||
|
||||
if (argc == 1)
|
||||
|
||||
@@ -63,6 +63,10 @@ int GenInitParams(int argc, char** argv, int* idx)
|
||||
UseGp = 1;
|
||||
return 1;
|
||||
}
|
||||
else if (!strcmp(argv[*idx], "-v"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -7593,10 +7593,6 @@ int main(int argc, char** argv)
|
||||
verbose = 1;
|
||||
continue;
|
||||
}
|
||||
else if (!strcmp(argv[i], "-v"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
#ifndef NO_PREPROCESSOR
|
||||
else if (!strcmp(argv[i], "-I"))
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
char *
|
||||
getenv(name)
|
||||
char *name;
|
||||
const char *name;
|
||||
{
|
||||
int offset;
|
||||
char *_findenv();
|
||||
|
||||
@@ -43,7 +43,8 @@ char *suboptarg;
|
||||
|
||||
int
|
||||
getsubopt(optionp, tokens, valuep)
|
||||
register char **optionp, **valuep;
|
||||
register char **optionp;
|
||||
register char **valuep;
|
||||
register char **tokens;
|
||||
{
|
||||
register int cnt;
|
||||
|
||||
@@ -43,11 +43,11 @@
|
||||
*/
|
||||
long
|
||||
strtol(nptr, endptr, base)
|
||||
char *nptr;
|
||||
const char *nptr;
|
||||
char **endptr;
|
||||
register int base;
|
||||
{
|
||||
register char *s = nptr;
|
||||
register const char *s = nptr;
|
||||
register unsigned long acc;
|
||||
register int c;
|
||||
register unsigned long cutoff;
|
||||
|
||||
@@ -43,11 +43,11 @@
|
||||
*/
|
||||
unsigned long
|
||||
strtoul(nptr, endptr, base)
|
||||
char *nptr;
|
||||
const char *nptr;
|
||||
char **endptr;
|
||||
register int base;
|
||||
{
|
||||
register char *s = nptr;
|
||||
register const char *s = nptr;
|
||||
register unsigned long acc;
|
||||
register int c;
|
||||
register unsigned long cutoff;
|
||||
|
||||
1
tools/virtualmips/.gitignore
vendored
1
tools/virtualmips/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
.deps
|
||||
pic32
|
||||
pic32-log.txt
|
||||
|
||||
@@ -140,7 +140,7 @@ unsigned dev_sdcard_io (cpu_mips_t *cpu, unsigned data)
|
||||
pic32->sdcard[1].select ? &pic32->sdcard[1] : 0;
|
||||
unsigned reply;
|
||||
|
||||
if (! d) {
|
||||
if (! d || ! d->fd) {
|
||||
TRACE ("sdcard: unselected i/o\n");
|
||||
return 0xFF;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user