Assembler and spi driver fixed for compatibility with latest gcc.

This commit is contained in:
Serge Vakulenko
2014-05-07 11:15:56 -07:00
parent 5e58ad0f3d
commit 4be5e54c38
2 changed files with 45 additions and 40 deletions

View File

@@ -2198,7 +2198,7 @@ void pass1 ()
case LSECTION: case LSECTION:
/* .section name[,"flags"[,type[,entsize]]] */ /* .section name[,"flags"[,type[,entsize]]] */
clex = getlex (&cval); clex = getlex (&cval);
if (clex != LNAME && clex != LBSS) if (clex != LNAME && clex != LBSS && clex != LTEXT && clex != LDATA)
uerror ("bad name of .section"); uerror ("bad name of .section");
setsection(); setsection();
clex = getlex (&cval); clex = getlex (&cval);
@@ -2206,7 +2206,12 @@ void pass1 ()
ungetlex (clex, cval); ungetlex (clex, cval);
break; break;
} }
skipstring(); clex = getlex (&cval);
if (clex == '"') {
ungetlex (clex, cval);
skipstring();
} else if (clex != LNAME)
uerror ("bad type of .section");
clex = getlex (&cval); clex = getlex (&cval);
if (clex != ',') { if (clex != ',') {
ungetlex (clex, cval); ungetlex (clex, cval);

View File

@@ -103,7 +103,7 @@ void spi_close(int dno)
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
if (spi_devices[dno].cs_tris != NULL) { if (spi_devices[dno].cs_tris != NULL) {
// Revert the CS pin to input. // Revert the CS pin to input.
TRIS_CLR(*spi_devices[dno].cs_tris) = 1<<spi_devices[dno].cs_pin; TRIS_CLR(*spi_devices[dno].cs_tris) = 1<<spi_devices[dno].cs_pin;
@@ -121,11 +121,11 @@ void spi_select(int dno)
{ {
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
if (spi_devices[dno].cs_tris == NULL) if (spi_devices[dno].cs_tris == NULL)
return; return;
spi_devices[dno].bus->brg = spi_devices[dno].baud; spi_devices[dno].bus->brg = spi_devices[dno].baud;
@@ -139,11 +139,11 @@ void spi_deselect(int dno)
{ {
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
if (spi_devices[dno].cs_tris == NULL) if (spi_devices[dno].cs_tris == NULL)
return; return;
LAT_SET(*spi_devices[dno].cs_tris) = 1<<spi_devices[dno].cs_pin; LAT_SET(*spi_devices[dno].cs_tris) = 1<<spi_devices[dno].cs_pin;
@@ -155,10 +155,10 @@ void spi_set(int dno, unsigned int set)
{ {
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
spi_devices[dno].mode |= set; spi_devices[dno].mode |= set;
} }
@@ -168,10 +168,10 @@ void spi_clr(int dno, unsigned int set)
{ {
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
spi_devices[dno].mode &= ~set; spi_devices[dno].mode &= ~set;
} }
@@ -181,10 +181,10 @@ unsigned int spi_status(int dno)
{ {
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return 0; return 0;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return 0; return 0;
return spi_devices[dno].bus->stat; return spi_devices[dno].bus->stat;
} }
@@ -199,7 +199,7 @@ unsigned char spi_transfer(int dno, unsigned char data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return 0xF0; return 0xF0;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return 0xF1; return 0xF1;
@@ -229,10 +229,10 @@ void spi_bulk_write_32_be(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
nread = 0; nread = 0;
nwritten = words; nwritten = words;
@@ -245,7 +245,7 @@ void spi_bulk_write_32_be(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
(void) spi_devices[dno].bus->buf; (void) spi_devices[dno].bus->buf;
nread++; nread++;
@@ -263,10 +263,10 @@ void spi_bulk_write_32(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
nread = 0; nread = 0;
nwritten = words; nwritten = words;
@@ -279,7 +279,7 @@ void spi_bulk_write_32(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
(void) spi_devices[dno].bus->buf; (void) spi_devices[dno].bus->buf;
nread++; nread++;
@@ -297,10 +297,10 @@ void spi_bulk_write_16(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
nread = 0; nread = 0;
nwritten = words; nwritten = words;
@@ -313,7 +313,7 @@ void spi_bulk_write_16(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
(void) spi_devices[dno].bus->buf; (void) spi_devices[dno].bus->buf;
nread++; nread++;
@@ -326,18 +326,18 @@ void spi_bulk_write(int dno, unsigned int len, unsigned char *data)
{ {
unsigned char *data8 = data; unsigned char *data8 = data;
unsigned int i; unsigned int i;
unsigned char in,out; unsigned char out;
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
for(i=0; i<len; i++) for(i=0; i<len; i++)
{ {
out = *data8; out = *data8;
in = spi_transfer(dno, out); spi_transfer(dno, out);
data8++; data8++;
} }
} }
@@ -355,7 +355,7 @@ void spi_bulk_read_32_be(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -371,7 +371,7 @@ void spi_bulk_read_32_be(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*data32++ = mips_bswap(spi_devices[dno].bus->buf); *data32++ = mips_bswap(spi_devices[dno].bus->buf);
nread++; nread++;
@@ -389,7 +389,7 @@ void spi_bulk_read_32(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -405,7 +405,7 @@ void spi_bulk_read_32(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*data32++ = spi_devices[dno].bus->buf; *data32++ = spi_devices[dno].bus->buf;
nread++; nread++;
@@ -423,7 +423,7 @@ void spi_bulk_read_16(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -439,7 +439,7 @@ void spi_bulk_read_16(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*data16++ = mips_bswap(spi_devices[dno].bus->buf); *data16++ = mips_bswap(spi_devices[dno].bus->buf);
nread++; nread++;
@@ -456,7 +456,7 @@ void spi_bulk_read(int dno, unsigned int len, unsigned char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -479,7 +479,7 @@ void spi_bulk_rw_32_be(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -495,7 +495,7 @@ void spi_bulk_rw_32_be(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*read32++ = mips_bswap(spi_devices[dno].bus->buf); *read32++ = mips_bswap(spi_devices[dno].bus->buf);
nread++; nread++;
@@ -514,7 +514,7 @@ void spi_bulk_rw_32(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -530,7 +530,7 @@ void spi_bulk_rw_32(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*read32++ = spi_devices[dno].bus->buf; *read32++ = spi_devices[dno].bus->buf;
nread++; nread++;
@@ -549,7 +549,7 @@ void spi_bulk_rw_16(int dno, unsigned int len, char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;
@@ -565,7 +565,7 @@ void spi_bulk_rw_16(int dno, unsigned int len, char *data)
nwritten--; nwritten--;
} }
if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE)) if(!(spi_devices[dno].bus->stat & PIC32_SPISTAT_SPIRBE))
{ {
*read16++ = mips_bswap(spi_devices[dno].bus->buf); *read16++ = mips_bswap(spi_devices[dno].bus->buf);
nread++; nread++;
@@ -582,7 +582,7 @@ void spi_bulk_rw(int dno, unsigned int len, unsigned char *data)
if(dno >= MAXSPIDEV) if(dno >= MAXSPIDEV)
return; return;
if(spi_devices[dno].bus==NULL) if(spi_devices[dno].bus==NULL)
return; return;