Author: wmb Date: Sun Jan 19 02:21:01 2014 New Revision: 3708 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3708
Log: 1) Eliminated some C compiler warnings by being strict about return values. 2) Fixed the PowerPC build.
Modified: cpu/ppc/basefw.bth cpu/ppc/kerncode.fth cpu/ppc/ppcsim/ppcsim.c cpu/x86/Linux/Makefile cpu/x86/Linux/Makefile.ppcforth forth/wrapper/logger.c forth/wrapper/wrapper.c
Modified: cpu/ppc/basefw.bth ============================================================================== --- cpu/ppc/basefw.bth Sat Jan 11 07:24:15 2014 (r3707) +++ cpu/ppc/basefw.bth Sun Jan 19 02:21:01 2014 (r3708) @@ -69,6 +69,8 @@ fload ${BP}/ofw/fs/cdfs/loadpkg.fth \ ISO 9660 CD-ROM file system reader end-support-package
+fload ${BP}/ofw/disklabel/gpttools.fth + support-package: disk-label fload ${BP}/ofw/disklabel/loadpkg.fth \ Disk label package end-support-package
Modified: cpu/ppc/kerncode.fth ============================================================================== --- cpu/ppc/kerncode.fth Sat Jan 11 07:24:15 2014 (r3707) +++ cpu/ppc/kerncode.fth Sun Jan 19 02:21:01 2014 (r3708) @@ -88,6 +88,7 @@ :-h skip-branch " addi ip,ip,/branch" evaluate ;-h :-h literal-to-tos " lwzu tos,/token(ip)" evaluate ;-h :-h literal-to-t0 " lwzu t0,/token(ip)" evaluate ;-h +:-h tliteral-to-t0 " lwzu t0,/token(ip) add t0,t0,base" evaluate ;-h :-h rdrop " addi rp,rp,1cell" evaluate ;-h :-h rdrop3 " addi rp,rp,3cells" evaluate ;-h
@@ -191,21 +192,22 @@ meta definitions
code isdefer ( xt -- ) - literal-to-t0 + tliteral-to-t0 lwz t0,/cf(t0) \ User number in t0 + subfc tos,base,tos stwx tos,t0,up pop-tos c;
code isvalue ( n -- ) - literal-to-t0 + tliteral-to-t0 lwz t0,/cf(t0) \ User number in t0 stwx tos,t0,up pop-tos c;
code isuser ( n -- ) - literal-to-t0 + tliteral-to-t0 lwz t0,/cf(t0) \ User number in t0 stwx tos,t0,up pop-tos @@ -218,7 +220,7 @@ c;
code isvariable ( n -- ) - literal-to-t0 + tliteral-to-t0 stw tos,/cf(t0) pop-tos c; @@ -384,6 +386,15 @@ pop-tos c;
+\ ($endof) is the same as branch, and ($endcase) is the same as drop, +\ but redefining them this way makes the decompiler much easier. +code ($endof) (s -- ) + take-branch +c; +code ($endcase) (s n -- ) + pop-tos +c; + assembler mlabel dofalse addi tos,r0,0 @@ -762,6 +773,145 @@ pop2 c;
+\ Find the first occurence of bvalue, returning the residual string +code bscan ( adr len bvalue -- adr' len' ) + mr t1,tos \ t1:bvalue + lwz tos,0(sp) \ tos:len + addi sp,sp,1cell \ Move stack pointer by one + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + lwz t0,0(sp) \ t0:adr + + addi t0,t0,-1 \ Account for pre-incrementing + begin + lbzu t2,1(t0) + cmp 0,0,t1,t2 = if + stw t0,0(sp) + next + then + addic. tos,tos,-1 + 0= until + + addi t0,t0,1 + stw t0,0(sp) +c; + +code wscan ( adr len wvalue -- adr' len' ) + mr t1,tos \ t1:lvalue + lwz tos,0(sp) \ tos:len + addi sp,sp,1cell \ Move stack pointer by one + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + lwz t0,0(sp) \ t0:adr + + addi t0,t0,-2 \ Account for pre-incrementing + begin + lhzu t2,2(t0) + cmp 0,0,t1,t2 = if + stw t0,0(sp) + next + then + addic. tos,tos,-2 + 0= until + + addi t0,t0,2 + stw t0,0(sp) +c; + +code lscan ( adr len lvalue -- adr' len' ) + mr t1,tos \ t1:lvalue + lwz tos,0(sp) \ tos:len + addi sp,sp,1cell \ Move stack pointer by one + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + lwz t0,0(sp) \ t0:adr + + addi t0,t0,-4 \ Account for pre-incrementing + begin + lwzu t2,4(t0) + cmp 0,0,t1,t2 = if + stw t0,0(sp) + next + then + addic. tos,tos,-4 + 0= until + + addi t0,t0,4 + stw t0,0(sp) +c; + +\ Skip initial occurrences of bvalue, returning the residual length +code bskip ( adr len bvalue -- residue ) + mr t1,tos \ t1:bvalue + lwz tos,0(sp) \ tos:len + lwz t0,1cell(sp) \ t0:adr + addi sp,sp,2cells \ Move stack pointer by two + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + addi t0,t0,-1 \ Account for pre-incrementing + begin + lbzu t2,1(t0) + cmp 0,0,t1,t2 <> if + next + then + addic. tos,tos,-1 + 0= until +c; + +\ Skip initial occurrences of wvalue, returning the residual length +code wskip ( adr len wvalue -- residue ) + mr t1,tos \ t1:bvalue + lwz tos,0(sp) \ tos:len + lwz t0,1cell(sp) \ t0:adr + addi sp,sp,2cells \ Move stack pointer by two + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + addi t0,t0,-2 \ Account for pre-incrementing + begin + lhzu t2,2(t0) + cmp 0,0,t1,t2 <> if + next + then + addic. tos,tos,-2 + 0= until +c; + +\ Skip initial occurrences of bvalue, returning the residual length +code lskip ( adr len lvalue -- residue ) + mr t1,tos \ t1:bvalue + lwz tos,0(sp) \ tos:len + lwz t0,1cell(sp) \ t0:adr + addi sp,sp,2cells \ Move stack pointer by two + + cmpi 0,0,tos,0 0= if \ Bail out if len=0 + next + then + + addi t0,t0,-4 \ Account for pre-incrementing + begin + lwzu t2,4(t0) + cmp 0,0,t1,t2 <> if + next + then + addic. tos,tos,-4 + 0= until +c; + code noop (s -- ) c;
code lowbyte (s n -- low ) andi. tos,tos,h#ff c;
Modified: cpu/ppc/ppcsim/ppcsim.c ============================================================================== --- cpu/ppc/ppcsim/ppcsim.c Sat Jan 11 07:24:15 2014 (r3707) +++ cpu/ppc/ppcsim/ppcsim.c Sun Jan 19 02:21:01 2014 (r3708) @@ -1805,19 +1805,19 @@ power: if (!TBAR) printf("Unimplemented POWER instruction %08lx (%s) at %lx\n", - (long)instruction, (long)opname, (long)CIA); + (long)instruction, opname, (long)CIA); goto trapout;
unimplemented: if (!TBAR) printf("Unimplemented instruction %08lx (%s)at %lx\n", - (long)instruction, (long)opname, (long)CIA); + (long)instruction, opname, (long)CIA); goto trapout;
illegal: if (!TBAR) printf("Illegal instruction %08lx at %lx\n", - (long)instruction, (long)CIA, (long)0); + (long)instruction, (long)CIA);
trapout: if (TBAR) { @@ -1875,7 +1875,7 @@ " r0 r1 r2 r3 r4 r5\n" ); printf( - "%8x %8x %8x %8x %8x %8x\n\n", + "%8lx %8lx %8lx %8lx %8lx %8lx\n\n", greg[ 0], greg[ 1], greg[ 2], greg[ 3], greg[ 4], greg[ 5] );
@@ -1883,7 +1883,7 @@ " r6 r7 r8 r9 r10 r11\n" ); printf( - "%8x %8x %8x %8x %8x %8x\n\n", + "%8lx %8lx %8lx %8lx %8lx %8lx\n\n", greg[ 6], greg[ 7], greg[ 8], greg[ 9], greg[10], greg[11] ); #endif @@ -1891,24 +1891,24 @@ " r20 t0 r21 t1 r22 t2 r23 t3 r24 t4 r25 t5\n" ); printf( - "%8x %8x %8x %8x %8x %8x\n\n", + "%8lx %8lx %8lx %8lx %8lx %8lx\n\n", greg[20], greg[21], greg[22], greg[23], greg[24], greg[25] ); printf( " r26 base r27 up r28 tos r29 ip r30 rp r31 sp\n" ); printf( - "%8x %8x %8x %8x %8x %8x\n\n", + "%8lx %8lx %8lx %8lx %8lx %8lx\n\n", greg[26], greg[27], greg[28], greg[29], greg[30], greg[31] ); - printf("pc %x LR %x CTR %x CR %x", - pc, LR, CTR, CR.all + printf("pc %lx LR %lx CTR %lx CR %lx", + pc, LR, CTR, CR.all ); #ifndef SIMROM - printf(" CALLS: %x", greg[29] /* IP */); + printf(" CALLS: %lx", greg[29] /* IP */);
if (greg[30]) - printf(" %x %x %x", + printf(" %lx %lx %lx", ((u_long *)greg[30])[0], /* Return stack */ ((u_long *)greg[30])[1], ((u_long *)greg[30])[2] @@ -1919,13 +1919,13 @@ dumpallregs() { int i; - for (i=0; i<8 ; i++) printf("%9x", greg[i]); putchar('\n'); - for ( ; i<16; i++) printf("%9x", greg[i]); putchar('\n'); - for ( ; i<24; i++) printf("%9x", greg[i]); putchar('\n'); - for ( ; i<32; i++) printf("%9x", greg[i]); putchar('\n'); + for (i=0; i<8 ; i++) printf("%9lx", greg[i]); putchar('\n'); + for ( ; i<16; i++) printf("%9lx", greg[i]); putchar('\n'); + for ( ; i<24; i++) printf("%9lx", greg[i]); putchar('\n'); + for ( ; i<32; i++) printf("%9lx", greg[i]); putchar('\n');
- printf("pc %x LR %x CTR %x CR %x ", - pc, LR, CTR, CR.all + printf("pc %lx LR %lx CTR %lx CR %lx ", + pc, LR, CTR, CR.all ); printf("\n"); } @@ -1956,7 +1956,7 @@ u_long *reladr;
reladr = (u_long *) &xmem[ (int)adr ]; - printf("%x: %8x %8x %8x %8x %8x %8x %8x %8x\n", + printf("%lx: %8lx %8lx %8lx %8lx %8lx %8lx %8lx %8lx\n", adr, reladr[0], reladr[1], reladr[2], reladr[3], reladr[4], reladr[5], reladr[6], reladr[7] @@ -1983,7 +1983,7 @@ IABR = 0; stepping = 1;
- printf("%x %x %s ", pc, greg[29], name); + printf("%lx %lx %s ", pc, greg[29], name); for (done=0; !done; ) { printf(" : "); #ifndef SIMROM @@ -1994,13 +1994,14 @@ #endif switch(c) { - case 'b': scanf("%x", &IABR); stepping = 0; break; + int res; + case 'b': res = scanf("%lx", &IABR); stepping = 0; break; case 'n': IABR = greg[27]; stepping = 0; break; - case 'u': scanf("%x", &arg); + case 'u': res = scanf("%x", &arg); dumpmem((long)(greg[27]+arg)); GETLINE; break; - case 'm': scanf("%x", &arg); + case 'm': res = scanf("%x", &arg); dumpmem((long)arg); GETLINE; break;
Modified: cpu/x86/Linux/Makefile ============================================================================== --- cpu/x86/Linux/Makefile Sat Jan 11 07:24:15 2014 (r3707) +++ cpu/x86/Linux/Makefile Sun Jan 19 02:21:01 2014 (r3708) @@ -44,7 +44,7 @@ @ln -sf forth x86forth
xinflate.lo: ${ZIPDIR}/inflate.c - ${CC} -c ${MFLAGS} -Wall -fno-stack-protector -ffreestanding -D_FORTIFY_SOURCE=0 -DNEED_BCOPY -O3 -fpic $< -o $@ + ${CC} -c ${MFLAGS} -Wall -fno-builtin -fno-stack-protector -ffreestanding -DNEED_BCOPY -O2 -fpic $< -o $@
xinflate.o: xinflate.lo ${LD} -melf_i386 -T inflate.ld $< -o $@
Modified: cpu/x86/Linux/Makefile.ppcforth ============================================================================== --- cpu/x86/Linux/Makefile.ppcforth Sat Jan 11 07:24:15 2014 (r3707) +++ cpu/x86/Linux/Makefile.ppcforth Sun Jan 19 02:21:01 2014 (r3708) @@ -5,6 +5,8 @@ BP=../../..
CFLAGS = -DPPCSIM -DTARGET_POWERPC +CFLAGS += -m32 +LFLAGS += -m32
CC = gcc
Modified: forth/wrapper/logger.c ============================================================================== --- forth/wrapper/logger.c Sat Jan 11 07:24:15 2014 (r3707) +++ forth/wrapper/logger.c Sun Jan 19 02:21:01 2014 (r3708) @@ -241,6 +241,7 @@ void log_command_line(int argc, char *argv[]) { int i; + char *pret; char cwdbuf[MAXPATHLEN*2];
#ifdef __unix__ @@ -278,7 +279,7 @@ sprintf(info, "host: %s\n", hostname); record(&misc);
- getcwd(cwdbuf, 128); + pret = getcwd(cwdbuf, 128); sprintf(info, "cwd: %s\n", cwdbuf); record(&misc); }
Modified: forth/wrapper/wrapper.c ============================================================================== --- forth/wrapper/wrapper.c Sat Jan 11 07:24:15 2014 (r3707) +++ forth/wrapper/wrapper.c Sun Jan 19 02:21:01 2014 (r3708) @@ -326,10 +326,6 @@ extern void log_command_line(int, char **); extern void log_env(char *, char *);
-#if !defined(LinuxPOWERPC) && !defined(__APPLE__) - extern int read(), write(); -#endif - INTERNAL char * substr(); INTERNAL long path_open(); INTERNAL void keymode(); @@ -348,7 +344,11 @@ long c_key(); long s_bye(); void restoremode(); +#ifdef PPCSIM + void simulate(char *, char *, char *, long (**)(), char *, int, char **, int); +#else void simulate(char *, char *, char *, long (**)(), char *, int, char **); +#endif long find(long, int, long, char *); #else INTERNAL long c_key(); @@ -710,12 +710,14 @@ void set_bp(void) { + char *pret; + int ret; char here[MAXPATHLEN]; - getcwd(here, MAXPATHLEN); - getcwd(bpval, MAXPATHLEN); + pret = getcwd(here, MAXPATHLEN); + pret = getcwd(bpval, MAXPATHLEN); while (1) { if (access(host_cpu, F_OK) == 0) { - getcwd(hostdirval, MAXPATHLEN); + pret = getcwd(hostdirval, MAXPATHLEN); strcat(hostdirval, "/"); strcat(hostdirval, host_cpu); strcat(hostdirval, "/"); @@ -723,14 +725,14 @@ } if (access("ofw", F_OK) == 0) break; - chdir(".."); - getcwd(bpval, MAXPATHLEN); + ret = chdir(".."); + pret = getcwd(bpval, MAXPATHLEN); if (strcmp(bpval, "/") == 0) { bpval[0] = '\0'; break; } } - chdir(here); + ret = chdir(here); }
struct woptions { char *dashopt; char *forthopt; } woptions[] = @@ -1112,6 +1114,7 @@ #endif
#ifdef TARGET_POWERPC +#ifndef PPCSIM # ifdef NOGLUE { long toc_entry[2]; int c; toc_entry[1] = 0; @@ -1127,6 +1130,7 @@ s_bye(0L); # endif #endif +#endif
#ifdef __APPLE_CC__ { @@ -1694,16 +1698,16 @@ INTERNAL long c_expect(long max, char *buffer) { - int c = 0; + int c = 0, ret; register char *p = buffer;
linemode();
fflush(stdout); - read(0, &c, 1); + ret = read(0, &c, 1); while (max-- && c != '\n' && c != EOF ) { *p++ = c; - read(0, &c, 1); + ret = read(0, &c, 1); } keymode(); return ( (long)(p - buffer) ); @@ -1756,9 +1760,10 @@ void error(char *str1, char *str2) { - write(2,str1,strlen(str1)); - write(2,str2,strlen(str2)); - write(2,"\n",1); + int ret; + ret = write(2,str1,strlen(str1)); + ret = write(2,str2,strlen(str2)); + ret = write(2,"\n",1); }
@@ -1791,11 +1796,11 @@
char output_filename[MAXPATHLEN]; #ifdef USE_STDIO -#define NONE -1 -int output_fd = NONE; + #define NONE (FILE *)0 + FILE *output_fd = NONE; #else -#define NONE (FILE *)0 -FILE *output_fd = NONE; + #define NONE -1 + int output_fd = NONE; #endif
#ifdef USE_STDIO @@ -1849,7 +1854,7 @@ if (result != -1) { strcpy(output_filename, name); output_fd = result; - } + } #else #ifdef __unix__ result = open(expand_name(name), O_RDWR|O_CREAT|O_TRUNC, (int)mode); @@ -1858,8 +1863,8 @@ #endif if (result != -1) { strcpy(output_filename, name); - output_fd = (FILE *)result; - } + output_fd = result; + } #endif return((long)result); }
openfirmware@openfirmware.info