Author: tooch Date: Thu Jan 27 20:05:17 2011 New Revision: 2157 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2157
Log: Add pld{w} to ARM assembler. One more arm/build/Makefile tweak.
Modified: cpu/arm/assem.fth cpu/arm/build/Makefile cpu/arm/disassem.fth
Modified: cpu/arm/assem.fth ============================================================================== --- cpu/arm/assem.fth Thu Jan 27 02:22:27 2011 (r2156) +++ cpu/arm/assem.fth Thu Jan 27 20:05:17 2011 (r2157) @@ -681,6 +681,12 @@
: amode-lsr ( -- ) init-operands (amode-ls) {!} !op ;
+: amode-pld ( -- ) + \ Like amode-ls and friends except r16 vice r12. + 0080.0000 iop + ['] get-off12 get-ea !op +; + : get-off8 ( -- ) \ Get the offset for [ldr|str][h\sh\sb] instructions. get-whatever case @@ -835,6 +841,7 @@ d# 28 set-field \ put the condition code in. ; : {cond/s} ( opcode -- ) {cond} {s} ; +: {uncond} ( opcode -- ) is newword ;
: parse-inc ( l-flag -- ) \ Parse the increment tag for ldm and stm. There MUST be a two letter @@ -864,11 +871,14 @@ set-parse rem$ lower ( )
5 ?match if execute exit then + 4 ?match if execute exit then 3 ?match if execute exit then
\ Don't try a 2-character match if the string length is 3, because, \ for example, "blt" (i.e. b{lt}) would then match "bl" instead of "b". - rem-len 3 <> if 2 ?match if execute then then + rem-len 3 <> if + 2 ?match if execute exit then + then
1 ?match if execute exit then
@@ -1043,6 +1053,9 @@ : dmb ( -- ) h# f57ff050 asm, ; : isb ( -- ) h# f57ff060 asm, ;
+: pld ( -- ) h# f550.f000 {uncond} amode-pld ; +: pldw ( -- ) h# f510.f000 {uncond} amode-pld ; + : # ( -- adt-immed ) adt-immed ; : reg ( -- adt-reg ) adt-reg ;
Modified: cpu/arm/build/Makefile ============================================================================== --- cpu/arm/build/Makefile Thu Jan 27 02:22:27 2011 (r2156) +++ cpu/arm/build/Makefile Thu Jan 27 20:05:17 2011 (r2157) @@ -1,8 +1,8 @@ -BASEDIR= `(cd ../../../; pwd;)` +BASEDIR= $(shell cd ../../../; pwd)
OS := $(shell uname) HOSTCPU= $(shell ${BASEDIR}/forth/lib/hostcpu.sh) -HOSTDIR= ../../${HOSTCPU}/${OS} +HOSTDIR= ${BASEDIR}/cpu/${HOSTCPU}/${OS} BUILDSH= ${BASEDIR}/forth/lib/build.sh
all: basefw.dic @@ -20,9 +20,6 @@ build: ${HOSTDIR}/forth ${HOSTDIR}/armforth @ln -sf ${BUILDSH} build
-# build: ../${OS}/forth -# @ln -sf ../${OS}/forth $@ - %.dic: FORCE build ./build $@
@@ -35,4 +32,5 @@
# Don't use *.dic so as not to remove builder.dic clean: - rm -f tools.dic kernel.dic basefw.dic *.log headers *~ inflate.bin build + rm -f tools.dic kernel.dic basefw.dic *.log headers *~ inflate.bin build *.tag +
Modified: cpu/arm/disassem.fth ============================================================================== --- cpu/arm/disassem.fth Thu Jan 27 02:22:27 2011 (r2156) +++ cpu/arm/disassem.fth Thu Jan 27 20:05:17 2011 (r2157) @@ -441,6 +441,11 @@ ['] .ldc/stc compile, \ 6 ['] .coproc compile, \ 7
+: .pld ( -- ) + d#22 bit? if ." pld" else ." pldw" then + op-col .[ .rn ,.addr-mode .] +; + : uncond-op ( -- op ) d# 4 bit? ; : uncond-op1 ( -- op1 ) d# 20 8bits ; : uncond-op2 ( -- op2 ) d# 4 4bits ; @@ -452,6 +457,10 @@ 5 of ." dmb" endof 6 of ." isb" endof endcase endof + h# 51 of .pld endof + h# 55 of .pld endof + h# 59 of .pld endof + h# 5d of .pld endof ." ?" endcase ;
openfirmware@openfirmware.info