Fixed bug in assembler, introduced by previos patch.

(Negative offsets in LW/SW not recognized)
Also, modified stdlib.h for compatibility with SmallerC.
This commit is contained in:
Sergey
2014-05-03 23:56:57 -07:00
parent e0ba612250
commit 6f47acb2ae
7 changed files with 34 additions and 34 deletions

View File

@@ -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_ */

View File

@@ -1594,17 +1594,13 @@ foff16: expr_flags = 0;
/* Test whether the immediate is in valid range
* for the opcode. */
switch (opcode & 0xfc000000) {
case 0x20000000: // addi
case 0x24000000: // addiu
case 0x28000000: // slti
case 0x2c000000: // sltiu
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
default:
case 0x30000000: /* andi */
case 0x34000000: /* ori */
case 0x38000000: /* xori */
/* 16-bit unsigned value. */
valid_range = (offset <= 0xffff);
break;

View File

@@ -14,7 +14,7 @@
*/
char *
getenv(name)
char *name;
const char *name;
{
int offset;
char *_findenv();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,2 +1,3 @@
.deps
pic32
pic32-log.txt