Compare commits
3 Commits
Author | SHA1 | Date |
---|---|---|
Ada Gottensträter | abf969f43e | |
Ada Gottensträter | 3499f9c879 | |
Ada Gottensträter | 6b3f7c1a6a |
2
Makefile
2
Makefile
|
@ -38,7 +38,7 @@ OBJECTS = $(patsubst %,$(BUILD)/%, $(SOURCES:.c=.o))
|
||||||
# commented them out for the time being
|
# commented them out for the time being
|
||||||
#LDFLAGS = -Wl,--relax -Wl,--gc-sections
|
#LDFLAGS = -Wl,--relax -Wl,--gc-sections
|
||||||
LDFLAGS = -lm
|
LDFLAGS = -lm
|
||||||
OPT := -O3 -flto -fno-fat-lto-objects
|
OPT := -O3 -flto -fno-fat-lto-objects -march=native
|
||||||
CFLAGS = -c -g -Wall -Wno-format $(OPT) -D LINUX
|
CFLAGS = -c -g -Wall -Wno-format $(OPT) -D LINUX
|
||||||
|
|
||||||
all: directory $(SOURCES) $(OBJECTS) Makefile
|
all: directory $(SOURCES) $(OBJECTS) Makefile
|
||||||
|
|
4
debug.c
4
debug.c
|
@ -24,7 +24,7 @@ extern int32_t baudrate;
|
||||||
extern int32_t eeprom;
|
extern int32_t eeprom;
|
||||||
extern char *hubram;
|
extern char *hubram;
|
||||||
extern int32_t printbreak;
|
extern int32_t printbreak;
|
||||||
extern PasmVarsT PasmVars[8];
|
extern PasmVarsT PasmVars[16];
|
||||||
extern SerialT serial_in;
|
extern SerialT serial_in;
|
||||||
extern SerialT serial_out;
|
extern SerialT serial_out;
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ int32_t RunProp(int32_t maxloops)
|
||||||
while (runflag && (maxloops < 0 || loopcount < maxloops))
|
while (runflag && (maxloops < 0 || loopcount < maxloops))
|
||||||
{
|
{
|
||||||
runflag = step_chip();
|
runflag = step_chip();
|
||||||
CheckCommand();
|
//CheckCommand();
|
||||||
if (baudrate)
|
if (baudrate)
|
||||||
{
|
{
|
||||||
CheckSerialOut(&serial_out);
|
CheckSerialOut(&serial_out);
|
||||||
|
|
2
gdb.c
2
gdb.c
|
@ -19,7 +19,7 @@
|
||||||
extern FILE *logfile;
|
extern FILE *logfile;
|
||||||
extern FILE *tracefile;
|
extern FILE *tracefile;
|
||||||
extern FILE *cmdfile;
|
extern FILE *cmdfile;
|
||||||
extern PasmVarsT PasmVars[8];
|
extern PasmVarsT PasmVars[16];
|
||||||
extern char *hubram;
|
extern char *hubram;
|
||||||
char cmd[1028];
|
char cmd[1028];
|
||||||
extern int32_t profile;
|
extern int32_t profile;
|
||||||
|
|
|
@ -11,7 +11,7 @@ extern char *hubram;
|
||||||
extern int32_t memsize;
|
extern int32_t memsize;
|
||||||
extern char lockstate[16];
|
extern char lockstate[16];
|
||||||
extern char lockalloc[16];
|
extern char lockalloc[16];
|
||||||
extern PasmVarsT PasmVars[8];
|
extern PasmVarsT PasmVars[16];
|
||||||
extern int32_t pasmspin;
|
extern int32_t pasmspin;
|
||||||
extern int32_t cycleaccurate;
|
extern int32_t cycleaccurate;
|
||||||
extern int32_t loopcount;
|
extern int32_t loopcount;
|
||||||
|
@ -28,12 +28,16 @@ void PrintResults(int32_t zcri, int32_t zflag, int32_t cflag, int32_t result)
|
||||||
|
|
||||||
static int32_t parity(int32_t val)
|
static int32_t parity(int32_t val)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
val ^= val >> 16;
|
val ^= val >> 16;
|
||||||
val ^= val >> 8;
|
val ^= val >> 8;
|
||||||
val ^= val >> 4;
|
val ^= val >> 4;
|
||||||
val ^= val >> 2;
|
val ^= val >> 2;
|
||||||
val ^= val >> 1;
|
val ^= val >> 1;
|
||||||
return val & 1;
|
return val & 1;
|
||||||
|
#else
|
||||||
|
return __builtin_parity(val);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t abs(int32_t val)
|
static int32_t abs(int32_t val)
|
||||||
|
|
14
pasmsim2.c
14
pasmsim2.c
|
@ -56,12 +56,12 @@ static int wrl_flags1 = 0;
|
||||||
static int rdl_flags0 = 0;
|
static int rdl_flags0 = 0;
|
||||||
static int rdl_flags1 = 0;
|
static int rdl_flags1 = 0;
|
||||||
|
|
||||||
char *GetOpname2(unsigned int, int *, int *, int *);
|
char *GetOpname2(unsigned int, int *, int *, int *, int);
|
||||||
|
|
||||||
static void NotImplemented(int instruction)
|
static void NotImplemented(int instruction)
|
||||||
{
|
{
|
||||||
int dummy;
|
int dummy;
|
||||||
char *opname = GetOpname2(instruction, &dummy, &dummy, &dummy);
|
char *opname = GetOpname2(instruction, &dummy, &dummy, &dummy,0);
|
||||||
printf("%s%s not implemented - %8.8x%s", NEW_LINE, opname, instruction, NEW_LINE);
|
printf("%s%s not implemented - %8.8x%s", NEW_LINE, opname, instruction, NEW_LINE);
|
||||||
spinsim_exit(1);
|
spinsim_exit(1);
|
||||||
}
|
}
|
||||||
|
@ -2641,13 +2641,13 @@ int32_t ExecutePasmInstruction2(PasmVarsT *pasmvars)
|
||||||
if (value2 >= 0xfff80 && value2 < 0xfffc0)
|
if (value2 >= 0xfff80 && value2 < 0xfffc0)
|
||||||
wrl_flags0 |= 1 << ((value2 >> 2) & 15);
|
wrl_flags0 |= 1 << ((value2 >> 2) & 15);
|
||||||
result = read_unaligned_long(value2);
|
result = read_unaligned_long(value2);
|
||||||
if ((value1 & 0xff) != 0xff)
|
if (value1 & 0xff)
|
||||||
result = (result & ~0xff) | (value1 & 0xff);
|
result = (result & ~0xff) | (value1 & 0xff);
|
||||||
if ((value1 & 0xff) != 0xff00)
|
if (value1 & 0xff00)
|
||||||
result = (result & ~0xff00) | (value1 & 0xff00);
|
result = (result & ~0xff00) | (value1 & 0xff00);
|
||||||
if ((value1 & 0xff) != 0xff0000)
|
if (value1 & 0xff0000)
|
||||||
result = (result & ~0xff0000) | (value1 & 0xff0000);
|
result = (result & ~0xff0000) | (value1 & 0xff0000);
|
||||||
if ((value1 & 0xff) != 0xff000000)
|
if (value1 & 0xff000000)
|
||||||
result = (result & ~0xff000000) | (value1 & 0xff000000);
|
result = (result & ~0xff000000) | (value1 & 0xff000000);
|
||||||
write_unaligned_long(value2, result);
|
write_unaligned_long(value2, result);
|
||||||
if (pasmvars->printflag > 1)
|
if (pasmvars->printflag > 1)
|
||||||
|
@ -3618,7 +3618,7 @@ int32_t ExecutePasmInstruction2(PasmVarsT *pasmvars)
|
||||||
|
|
||||||
case 43: // pop
|
case 43: // pop
|
||||||
pasmvars->retptr = (pasmvars->retptr - 1) & 7;
|
pasmvars->retptr = (pasmvars->retptr - 1) & 7;
|
||||||
pasmvars->retstack[pasmvars->retptr] = value1;
|
result = pasmvars->retstack[pasmvars->retptr];
|
||||||
if (pasmvars->retptr == 7)
|
if (pasmvars->retptr == 7)
|
||||||
printf("return stack underflow%s", NEW_LINE);
|
printf("return stack underflow%s", NEW_LINE);
|
||||||
break;
|
break;
|
||||||
|
|
21
spininterp.c
21
spininterp.c
|
@ -14,7 +14,7 @@
|
||||||
#include "spinsim.h"
|
#include "spinsim.h"
|
||||||
|
|
||||||
extern int32_t printflag;
|
extern int32_t printflag;
|
||||||
extern PasmVarsT PasmVars[8];
|
extern PasmVarsT PasmVars[16];
|
||||||
extern char *hubram;
|
extern char *hubram;
|
||||||
extern int32_t memsize;
|
extern int32_t memsize;
|
||||||
extern int32_t loopcount;
|
extern int32_t loopcount;
|
||||||
|
@ -37,21 +37,10 @@ int32_t MAP_ADDR(int32_t addr)
|
||||||
{
|
{
|
||||||
if ((addr & 0xfffffff0) == 0x12340000)
|
if ((addr & 0xfffffff0) == 0x12340000)
|
||||||
{
|
{
|
||||||
addr = memsize + (addr & 15);
|
addr = memsize + (addr & 15);
|
||||||
}
|
} else {
|
||||||
else if (memsize == 65536)
|
addr &= memsize - 1;
|
||||||
{
|
}
|
||||||
addr &= 0xffff;
|
|
||||||
}
|
|
||||||
else if (((uint32_t)addr) >= memsize)
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
fprintf(tracefile, "MAP_ADDR(%d): address out of bounds %8.8x\n", loopcount, addr);
|
|
||||||
addr = memsize + 12;
|
|
||||||
#else
|
|
||||||
addr &= memsize - 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
//fprintf(tracefile, "MAP_ADDR: %8.8x %8.8x\n", addr, ((uint32_t *)hubram)[addr>>2]);
|
//fprintf(tracefile, "MAP_ADDR: %8.8x %8.8x\n", addr, ((uint32_t *)hubram)[addr>>2]);
|
||||||
|
|
||||||
return addr;
|
return addr;
|
||||||
|
|
|
@ -525,6 +525,7 @@ int CheckSerialIn(SerialT *serial)
|
||||||
value = getch();
|
value = getch();
|
||||||
//printf("CheckSerialIn: value = %x\n", value);
|
//printf("CheckSerialIn: value = %x\n", value);
|
||||||
if (value == 0x1d) return 1;
|
if (value == 0x1d) return 1;
|
||||||
|
if (value == EOF) return 0;
|
||||||
serial->flag = 1;
|
serial->flag = 1;
|
||||||
serial->value = value;
|
serial->value = value;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue