diff options
author | Austin Clements <austin@google.com> | 2014-10-22 15:51:54 -0400 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2014-10-22 15:51:54 -0400 |
commit | fc92f8a400cf3e4d053940e0b86b72d6de27d67a (patch) | |
tree | ad0b517f2a9cd798c909e59d982b9061f16c0348 /include | |
parent | 48b04a95e5f719cbef174124780dce00bb410c2c (diff) | |
parent | b8d4cd490ddd8ba298b5347d3e72316df768565c (diff) | |
download | go-fc92f8a400cf3e4d053940e0b86b72d6de27d67a.tar.gz |
[dev.power64] all: merge default into dev.power64
This brings dev.power64 up-to-date with the current tip of
default. go_bootstrap is still panicking with a bad defer
when initializing the runtime (even on amd64).
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/152570049
Diffstat (limited to 'include')
-rw-r--r-- | include/link.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/include/link.h b/include/link.h index 05e117c87..c80f46758 100644 --- a/include/link.h +++ b/include/link.h @@ -62,9 +62,9 @@ struct Addr short type; uint8 index; int8 scale; - int8 reg; // for 5l - int8 name; // for 5l - int8 class; // for 5l + int8 reg; // for 5l, 9l + int8 name; // for 5l, 9l + int8 class; // for 5l, 9l uint8 etype; // for 5g, 6g, 8g int32 offset2; // for 5l, 8l struct Node* node; // for 5g, 6g, 8g @@ -89,9 +89,10 @@ struct Prog int32 lineno; Prog* link; short as; - uchar reg; // arm only + uchar reg; // arm, power64 only uchar scond; // arm only Addr from; + Addr from3; // power64 only, fma and rlwm Addr to; // for 5g, 6g, 8g internal use @@ -103,11 +104,11 @@ struct Prog Prog* comefrom; // 6l, 8l Prog* pcrel; // 5l int32 spadj; - uchar mark; + uint16 mark; + uint16 optab; // 5l, 9l uchar back; // 6l, 8l uchar ft; /* 6l, 8l oclass cache */ uchar tt; // 6l, 8l - uint16 optab; // 5l uchar isize; // 6l, 8l char width; /* fake for DATA */ @@ -233,10 +234,12 @@ enum enum { R_ADDR = 1, + R_ADDRPOWER, // relocation for loading 31-bit address using addis and addi/ld/st for Power R_SIZE, R_CALL, // relocation for direct PC-relative call R_CALLARM, // relocation for ARM direct call R_CALLIND, // marker for indirect call (no actual relocating necessary) + R_CALLPOWER, // relocation for Power direct call R_CONST, R_PCREL, R_TLS, @@ -529,6 +532,9 @@ void span6(Link *ctxt, LSym *s); // asm8.c void span8(Link *ctxt, LSym *s); +// asm9.c +void span9(Link *ctxt, LSym *s); + // data.c vlong addaddr(Link *ctxt, LSym *s, LSym *t); vlong addaddrplus(Link *ctxt, LSym *s, LSym *t, vlong add); @@ -576,10 +582,11 @@ Prog* copyp(Link*, Prog*); Prog* appendp(Link*, Prog*); vlong atolwhex(char*); -// list[568].c +// list[5689].c void listinit5(void); void listinit6(void); void listinit8(void); +void listinit9(void); // obj.c int linklinefmt(Link *ctxt, Fmt *fp); @@ -611,20 +618,24 @@ char* headstr(int); extern char* anames5[]; extern char* anames6[]; extern char* anames8[]; +extern char* anames9[]; extern char* cnames5[]; +extern char* cnames9[]; extern LinkArch link386; extern LinkArch linkamd64; extern LinkArch linkamd64p32; extern LinkArch linkarm; +extern LinkArch linkpower64; +extern LinkArch linkpower64le; #pragma varargck type "A" int #pragma varargck type "D" Addr* #pragma varargck type "lD" Addr* #pragma varargck type "P" Prog* #pragma varargck type "R" int -#pragma varargck type "^" int +#pragma varargck type "^" int // for 5l/9l, C_* classes (liblink internal) // TODO(ality): remove this workaround. // It's here because Pconv in liblink/list?.c references %L. |