diff options
author | Shenghou Ma <minux@golang.org> | 2014-08-07 15:13:25 -0400 |
---|---|---|
committer | Shenghou Ma <minux@golang.org> | 2014-08-07 15:13:25 -0400 |
commit | 27d0dd420436a9a2dd9ed8170a5ac5bb4958bee9 (patch) | |
tree | ffbd21b7e716e86b077268f5efe281ee08ab57f9 /include | |
parent | d5f5813e711b9578d598b468f81898f4915fca81 (diff) | |
download | go-27d0dd420436a9a2dd9ed8170a5ac5bb4958bee9.tar.gz |
[dev.power64] include/link.h, liblink: convert 9l functions to liblink
This replaces CL 122990043.
LGTM=rsc
R=rsc, iant
CC=golang-codereviews
https://codereview.appspot.com/123010043
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 2b4de789d..298b048e7 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 */ @@ -232,10 +233,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, @@ -526,6 +529,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); @@ -572,10 +578,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); @@ -607,20 +614,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. |