Rename our pseudo-opcode 'la' to 'li32'.
GNU as has "la %r4,8(%r3)" as an alias for "addi %r4,%r3,8", meaning to load the address of the thing at 8(%r3). Our 'la', now 'li32', makes an addis/ori pair to load an immediate 32-bit value. For example, "li32 r4,23456789" loads a big number.
This commit is contained in:
parent
9db305b338
commit
5b69777647
10 changed files with 16 additions and 16 deletions
|
@ -80,7 +80,7 @@
|
||||||
%token <y_word> OP_TO_RA_RB
|
%token <y_word> OP_TO_RA_RB
|
||||||
%token <y_word> OP_TO_RA_SI
|
%token <y_word> OP_TO_RA_SI
|
||||||
|
|
||||||
%token <y_word> OP_LA
|
%token <y_word> OP_LI32
|
||||||
|
|
||||||
/* Other token types */
|
/* Other token types */
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
|
|
||||||
/* Special instructions */
|
/* Special instructions */
|
||||||
|
|
||||||
0, OP_LA, 0, "la",
|
0, OP_LI32, 0, "li32",
|
||||||
|
|
||||||
/* Branch processor instructions (page 20) */
|
/* Branch processor instructions (page 20) */
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ operation
|
||||||
| OP_LEV u7 { emit4($1 | ($2<<5)); }
|
| OP_LEV u7 { emit4($1 | ($2<<5)); }
|
||||||
| OP_LIA lia { emit4($1 | $2); }
|
| OP_LIA lia { emit4($1 | $2); }
|
||||||
| OP_LIL lil { emit4($1 | $2); }
|
| OP_LIL lil { emit4($1 | $2); }
|
||||||
| OP_LA la /* emitted in subrule */
|
| OP_LI32 li32 /* emitted in subrule */
|
||||||
;
|
;
|
||||||
|
|
||||||
c
|
c
|
||||||
|
@ -193,7 +193,7 @@ bda
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
la
|
li32
|
||||||
: GPR ',' expr
|
: GPR ',' expr
|
||||||
{
|
{
|
||||||
newrelo($3.typ, RELOPPC | FIXUPFLAGS);
|
newrelo($3.typ, RELOPPC | FIXUPFLAGS);
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
.define .aar4
|
.define .aar4
|
||||||
.aar4:
|
.aar4:
|
||||||
la r0, .trap_earray
|
li32 r0, .trap_earray
|
||||||
mtspr ctr, r0 ! load CTR with trap address
|
mtspr ctr, r0 ! load CTR with trap address
|
||||||
|
|
||||||
lwz r0, 0(r3)
|
lwz r0, 0(r3)
|
||||||
|
|
|
@ -13,15 +13,15 @@
|
||||||
|
|
||||||
.define .cfu8
|
.define .cfu8
|
||||||
.cfu8:
|
.cfu8:
|
||||||
la r3, .fd_00000000
|
li32 r3, .fd_00000000
|
||||||
lfd f0, 0(r3) ! f0 = 0.0
|
lfd f0, 0(r3) ! f0 = 0.0
|
||||||
|
|
||||||
lfd f1, 0(sp) ! value to be converted
|
lfd f1, 0(sp) ! value to be converted
|
||||||
|
|
||||||
la r3, .fd_FFFFFFFF
|
li32 r3, .fd_FFFFFFFF
|
||||||
lfd f3, 0(r3) ! f3 = 0xFFFFFFFF
|
lfd f3, 0(r3) ! f3 = 0xFFFFFFFF
|
||||||
|
|
||||||
la r3, .fd_80000000
|
li32 r3, .fd_80000000
|
||||||
lfd f4, 0(r3) ! f4 = 0x80000000
|
lfd f4, 0(r3) ! f4 = 0x80000000
|
||||||
|
|
||||||
fsel f2, f1, f1, f0
|
fsel f2, f1, f1, f0
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
lfd f0, 0(sp) ! load value
|
lfd f0, 0(sp) ! load value
|
||||||
|
|
||||||
la r3, pivot
|
li32 r3, pivot
|
||||||
lfd f1, 0(r3) ! load pivot value
|
lfd f1, 0(r3) ! load pivot value
|
||||||
fsub f0, f0, f1 ! adjust
|
fsub f0, f0, f1 ! adjust
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
lfd f0, 0(sp) ! load value
|
lfd f0, 0(sp) ! load value
|
||||||
|
|
||||||
la r3, pivot
|
li32 r3, pivot
|
||||||
lfd f1, 0(r3) ! load pivot value
|
lfd f1, 0(r3) ! load pivot value
|
||||||
fsub f0, f0, f1 ! adjust
|
fsub f0, f0, f1 ! adjust
|
||||||
|
|
||||||
|
|
|
@ -293,7 +293,6 @@ INSTRUCTIONS
|
||||||
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
|
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
|
||||||
fmr FPR:wo, FPR:ro.
|
fmr FPR:wo, FPR:ro.
|
||||||
fmr FSREG:wo, FSREG:ro.
|
fmr FSREG:wo, FSREG:ro.
|
||||||
la GPRI:wo, LABEL:ro.
|
|
||||||
lbzx GPRI:wo, GPR:ro, GPR:ro.
|
lbzx GPRI:wo, GPR:ro, GPR:ro.
|
||||||
lbz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lbz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lfd FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lfd FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
|
@ -306,6 +305,7 @@ INSTRUCTIONS
|
||||||
lhax GPRI:wo, GPR:ro, GPR:ro.
|
lhax GPRI:wo, GPR:ro, GPR:ro.
|
||||||
lha GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lha GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lhz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lhz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
|
li32 GPRI:wo, LABEL:ro.
|
||||||
lwzu GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lwzu GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lwzx GPRI:wo, GPR:ro, GPR:ro.
|
lwzx GPRI:wo, GPR:ro, GPR:ro.
|
||||||
lwz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lwz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
|
@ -385,7 +385,7 @@ MOVES
|
||||||
from LABEL to GPR
|
from LABEL to GPR
|
||||||
gen
|
gen
|
||||||
COMMENT("move LABEL->GPR")
|
COMMENT("move LABEL->GPR")
|
||||||
la %2, {LABEL, %1.adr}
|
li32 %2, {LABEL, %1.adr}
|
||||||
|
|
||||||
/* Sign extension */
|
/* Sign extension */
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ __syscall:
|
||||||
bc IFTRUE, GT, 2f
|
bc IFTRUE, GT, 2f
|
||||||
|
|
||||||
3:
|
3:
|
||||||
la r4, _errno
|
li32 r4, _errno
|
||||||
stw r3, 0(r4)
|
stw r3, 0(r4)
|
||||||
addi r3, r0, -1
|
addi r3, r0, -1
|
||||||
bclr ALWAYS, 0, 0
|
bclr ALWAYS, 0, 0
|
||||||
|
|
|
@ -65,13 +65,13 @@ EUNIMPL = 63 ! unimplemented em-instruction called
|
||||||
|
|
||||||
addi r4, r0, 1
|
addi r4, r0, 1
|
||||||
rlwnm r4, r4, r3, 0, 31 ! calculate trap bit
|
rlwnm r4, r4, r3, 0, 31 ! calculate trap bit
|
||||||
la r5, .ignmask
|
li32 r5, .ignmask
|
||||||
lwz r5, 0(r5) ! load ignore mask
|
lwz r5, 0(r5) ! load ignore mask
|
||||||
and. r4, r4, r5 ! compare
|
and. r4, r4, r5 ! compare
|
||||||
bclr IFFALSE, EQ, 0 ! return if non-zero
|
bclr IFFALSE, EQ, 0 ! return if non-zero
|
||||||
|
|
||||||
1:
|
1:
|
||||||
la r4, .trppc
|
li32 r4, .trppc
|
||||||
lwz r5, 0(r4) ! load user trap routine
|
lwz r5, 0(r4) ! load user trap routine
|
||||||
or. r5, r5, r5 ! test
|
or. r5, r5, r5 ! test
|
||||||
bc IFTRUE, EQ, fatal ! if no user trap routine, bail out
|
bc IFTRUE, EQ, fatal ! if no user trap routine, bail out
|
||||||
|
@ -92,7 +92,7 @@ EUNIMPL = 63 ! unimplemented em-instruction called
|
||||||
|
|
||||||
fatal:
|
fatal:
|
||||||
addi r3, r0, 1
|
addi r3, r0, 1
|
||||||
la r4, message
|
li32 r4, message
|
||||||
addi r5, r0, 6
|
addi r5, r0, 6
|
||||||
addi r0, r0, 4 ! write()
|
addi r0, r0, 4 ! write()
|
||||||
sc 0
|
sc 0
|
||||||
|
|
Loading…
Reference in a new issue