From 32e860ac4b7c7183279982282438157077731604 Mon Sep 17 00:00:00 2001 From: Eliot Miranda Date: Tue, 23 Jan 2018 09:06:30 -0800 Subject: [PATCH] GdbARMAlien64 generation --- processors/ARM/exploration/Makefile64 | 31 ++++++++++++++++++++++++ processors/ARM/exploration/printcpu.c | 12 ++++++--- processors/ARM/exploration/printcpuvfp.c | 12 ++++++--- 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 processors/ARM/exploration/Makefile64 diff --git a/processors/ARM/exploration/Makefile64 b/processors/ARM/exploration/Makefile64 new file mode 100644 index 0000000000..e6faadb62c --- /dev/null +++ b/processors/ARM/exploration/Makefile64 @@ -0,0 +1,31 @@ +LIBDEPS=../cpu/libcpu.a +GDBARM=../../../processors/ARM/gdb-7.10 +GDBARMEXP=. +INCLUDES := -I$(GDBARM)/include \ + -I$(GDBARM)/sim/arm \ + -I$(GDBARM)/bfd \ + -I../bfd +LIBS:=-L../bfd -L../libiberty -L../opcodes -L../sim/arm -L../zlib \ + -lbfd -liberty -lopcodes -lopcodes -lsim -lz +CFLAGS=-m64 -DFOR64BITS=1 -DMODET $(INCLUDES) $(LIBS) + +.PHONY: $(LIBDEPS) + +all: GdbARMAlien64-regs.st GdbARMAlien64-vfp.st + +GdbARMAlien64-regs.st: printcpu64 + ./printcpu64 >GdbARMAlien64-regs.st + +GdbARMAlien64-vfp.st: printcpuvfp64 + ./printcpuvfp64 >GdbARMAlien64-vfp.st + +clean: + rm -f GdbARMAlien64-regs.st GdbARMAlien64-vfp.st + rm -f printcpu64 printcpuvfp64 + rm -f printcpu64.exe printcpuvfp64.exe + +printcpu64: $(GDBARMEXP)/printcpu.c $(LIBDEPS) + $(CC) -o $@ $< $(CFLAGS) + +printcpuvfp64: $(GDBARMEXP)/printcpuvfp.c $(LIBDEPS) + $(CC) -o $@ $< $(CFLAGS) diff --git a/processors/ARM/exploration/printcpu.c b/processors/ARM/exploration/printcpu.c index b07b34ac22..a78924aedb 100644 --- a/processors/ARM/exploration/printcpu.c +++ b/processors/ARM/exploration/printcpu.c @@ -20,16 +20,22 @@ lower(char *s) return buf; } +#if FOR64BITS +# define CLASS "!GdbARMAlien64" +#else +# define CLASS "!GdbARMAlien" +#endif + int main() { #define offsetof(type,field) (long)(&(((type *)0)->field)) #define stoffsetof(type,field) (offsetof(type,field)+1) #define print(n,r) \ -printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ +printf(CLASS " methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ "%s\r\t^self unsignedLongAt: %ld! !\r", m,d,y,h,i, lower(#r), \ stoffsetof(ARMul_State,Reg[n]));\ -printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ +printf(CLASS " methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ "%s: anUnsignedInteger\r\t^self unsignedLongAt: %ld put: anUnsignedInteger! !\r", m,d,y,h,i, lower(#r), \ stoffsetof(ARMul_State,Reg[n])) @@ -42,7 +48,7 @@ printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ int i = now.tm_min; printf("\"Hello world!!\"!\r"); - printf("!GdbARMAlien class methodsFor: 'instance creation' stamp: 'eem %d/%d/%d %d:%02d'!\r" + printf(CLASS " class methodsFor: 'instance creation' stamp: 'eem %d/%d/%d %d:%02d'!\r" "dataSize\r\t^%ld! !\r", m,d,y,h,i, sizeof(ARMul_State)); print(0,r0); diff --git a/processors/ARM/exploration/printcpuvfp.c b/processors/ARM/exploration/printcpuvfp.c index 3bf25d3581..638f8e1339 100644 --- a/processors/ARM/exploration/printcpuvfp.c +++ b/processors/ARM/exploration/printcpuvfp.c @@ -20,16 +20,22 @@ lower(char *s) return buf; } +#if FOR64BITS +# define CLASS "!GdbARMAlien64" +#else +# define CLASS "!GdbARMAlien" +#endif + int main() { #define offsetof(type,field) (long)(&(((type *)0)->field)) #define stoffsetof(type,field) (offsetof(type,field)+1) #define print(n,r) \ -printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ +printf(CLASS " methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ "%s\r\t^self unsignedLongLongAt: %ld! !\r", m,d,y,h,i, lower(#r), \ stoffsetof(ARMul_State,VFP_Reg[n].dword));\ -printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ +printf(CLASS " methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ "%s: anUnsignedInteger\r\t^self unsignedLongLongAt: %ld put: anUnsignedInteger! !\r", m,d,y,h,i, lower(#r), \ stoffsetof(ARMul_State,VFP_Reg[n].dword)) @@ -42,7 +48,7 @@ printf("!GdbARMAlien methodsFor: 'accessing' stamp: 'eem %d/%d/%d %d:%02d'!\r"\ int i = now.tm_min; printf("\"Hello world!!\"!\r"); - printf("!GdbARMAlien class methodsFor: 'instance creation' stamp: 'eem %d/%d/%d %d:%02d'!\r" + printf(CLASS " class methodsFor: 'instance creation' stamp: 'eem %d/%d/%d %d:%02d'!\r" "dataSize\r\t^%ld! !\r", m,d,y,h,i, sizeof(ARMul_State)); print(0,d0);