[openfirmware] [commit] r2271 - in cpu: arm arm/olpc/1.75 x86/pc/olpc/via
repository service
svn at openfirmware.info
Tue Jun 14 04:17:06 CEST 2011
Author: wmb
Date: Tue Jun 14 04:17:05 2011
New Revision: 2271
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2271
Log:
OLPC XO-1.75 trac #10884 - Nandblaster for ARM.
Added:
cpu/arm/bootascall.fth
cpu/arm/olpc/1.75/mcastnand.bth
cpu/arm/olpc/1.75/mcnand-version.fth
Modified:
cpu/arm/centry.fth
cpu/arm/olpc/1.75/config.fth
cpu/arm/olpc/1.75/fw.bth
cpu/arm/olpc/1.75/olpc.bth
cpu/x86/pc/olpc/via/mcastnand.bth
Added: cpu/arm/bootascall.fth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/bootascall.fth Tue Jun 14 04:17:05 2011 (r2271)
@@ -0,0 +1,135 @@
+\ See license at end of file
+purpose: Return from "booted" programs as if they were Forth words
+
+variable rp-var
+variable sp-var
+rs-size buffer: rs-buf
+ps-size buffer: ps-buf
+
+code save-forth-state ( -- )
+ \ Copy the entire Forth data stack and return stack areas to a save area.
+
+ \ Copy Data Stack
+ set r0,`'user# sp-var`
+ str sp,[up,r0] \ Save data stack pointer
+
+ ldr r1,'user sp0 \ Top of data stack area
+ dec r1,`ps-size \ Bottom of data stack area
+
+ set r0,`'user# ps-buf`
+ ldr r2,[up,r0] \ Address of data stack save area
+
+ mov r3,`ps-size #` \ Size of data stack area
+ begin
+ decs r3,4
+ ldr r0,[r1,r3]
+ str r0,[r2,r3]
+ 0= until
+
+
+ \ Return Stack
+ set r0,`'user# rp-var`
+ str rp,[up,r0] \ Save return stack pointer
+
+ ldr r1,'user rp0 \ Top of return stack area
+ dec r1,`rs-size \ Bottom of return stack area
+
+ set r0,`'user# rs-buf`
+ ldr r2,[up,r0] \ Address of return stack save area
+
+ mov r3,`rs-size #` \ Size of return stack area
+ begin
+ decs r3,4
+ ldr r0,[r1,r3]
+ str r0,[r2,r3]
+ 0= until
+c;
+
+: undo-boot-return ( -- )
+ ['] (quit) to user-interface
+;
+
+code resume-forth-state ( -- )
+ mrs r0,cpsr
+ orr r0,r0,#0x80 \ Set interrupt disable bit
+ msr cpsr,r0
+
+ \ Restore Data Stack
+ set r0,`'user# sp-var`
+ ldr sp,[up,r0] \ Save data stack pointer
+
+ ldr r1,'user sp0 \ Top of data stack area
+ dec r1,`ps-size \ Bottom of data stack area
+
+ set r0,`'user# ps-buf`
+ ldr r2,[up,r0] \ Address of data stack save area
+
+ mov r3,`ps-size #` \ Size of data stack area
+ begin
+ decs r3,4
+ ldr r0,[r2,r3]
+ str r0,[r1,r3]
+ 0= until
+
+
+ \ Restore Return Stack
+ set r0,`'user# rp-var`
+ ldr rp,[up,r0] \ Save return stack pointer
+
+ ldr r1,'user rp0 \ Top of return stack area
+ dec r1,`rs-size \ Bottom of return stack area
+
+ set r0,`'user# rs-buf`
+ ldr r2,[up,r0] \ Address of return stack save area
+
+ mov r3,`rs-size #` \ Size of return stack area
+ begin
+ decs r3,4
+ ldr r0,[r2,r3]
+ str r0,[r1,r3]
+ 0= until
+
+ mrs r0,cpsr
+ bic r0,r0,#0x80 \ Clear interrupt disable bit
+ msr cpsr,r0
+
+ pop ip,rp
+c;
+
+0 value saved-go-hook
+: boot-as-call( ( -- )
+ ps-buf drop rs-buf drop
+ ['] go-hook behavior to saved-go-hook
+ ['] save-forth-state to go-hook
+ ['] resume-forth-state to user-interface
+;
+: )boot-as-call ( -- )
+ saved-go-hook to go-hook
+ ['] (quit) to user-interface
+;
+ps-buf drop rs-buf drop
+: foo boot-as-call( emacs )boot-as-call cr ." Hello" cr ;
+
+\ LICENSE_BEGIN
+\ Copyright (c) 2010 FirmWorks
+\
+\ Permission is hereby granted, free of charge, to any person obtaining
+\ a copy of this software and associated documentation files (the
+\ "Software"), to deal in the Software without restriction, including
+\ without limitation the rights to use, copy, modify, merge, publish,
+\ distribute, sublicense, and/or sell copies of the Software, and to
+\ permit persons to whom the Software is furnished to do so, subject to
+\ the following conditions:
+\
+\ The above copyright notice and this permission notice shall be
+\ included in all copies or substantial portions of the Software.
+\
+\ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+\ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+\ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+\ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+\ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+\ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+\ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+\
+\ LICENSE_END
Modified: cpu/arm/centry.fth
==============================================================================
--- cpu/arm/centry.fth Tue Jun 14 04:10:25 2011 (r2270)
+++ cpu/arm/centry.fth Tue Jun 14 04:17:05 2011 (r2271)
@@ -34,7 +34,7 @@
ldr rp,'user rp0 \ Set return stack pointer
ldr sp,'user sp0 \ Set data stack pointer
- inc sp,1cell \ Account for the top of stack register
+ \ We don't increment sp because there is one item on the stack, in tos
adr ip,'body cif-exec \ Set interpreter pointer
c;
Modified: cpu/arm/olpc/1.75/config.fth
==============================================================================
--- cpu/arm/olpc/1.75/config.fth Tue Jun 14 04:10:25 2011 (r2270)
+++ cpu/arm/olpc/1.75/config.fth Tue Jun 14 04:17:05 2011 (r2271)
@@ -3,6 +3,7 @@
create olpc
create trust-ec-keyboard
create use-null-nvram
+create use-elf
fload ${BP}/cpu/arm/olpc/1.75/addrs.fth
fload ${BP}/cpu/arm/mmp2/hwaddrs.fth
Modified: cpu/arm/olpc/1.75/fw.bth
==============================================================================
--- cpu/arm/olpc/1.75/fw.bth Tue Jun 14 04:10:25 2011 (r2270)
+++ cpu/arm/olpc/1.75/fw.bth Tue Jun 14 04:17:05 2011 (r2271)
@@ -260,9 +260,7 @@
' pre-setup-for-linux to linux-pre-hook
: show-temperature ( -- ) ;
-: boot-as-call( ( -- ) ." Implement boot-as-call" cr ;
-: )boot-as-call ( -- ) ;
-\ fload ${BP}/cpu/x86/bootascall.fth
+fload ${BP}/cpu/arm/bootascall.fth
create use-thinmac
fload ${BP}/cpu/x86/pc/olpc/wifichannel.fth
fload ${BP}/cpu/x86/pc/olpc/via/nbtx.fth
Added: cpu/arm/olpc/1.75/mcastnand.bth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/1.75/mcastnand.bth Tue Jun 14 04:17:05 2011 (r2271)
@@ -0,0 +1,30 @@
+purpose: Fetch and compile the multicast NAND reflash program
+
+command: &builder &this
+build-now
+
+fload ${BP}/cpu/arm/olpc/1.75/mcnand-version.fth
+
+1 [if]
+ " ${MCNAND_VERSION}" expand$ " test" $= [if]
+ " multicast-nand/Makefile" $file-exists? 0= [if]
+ " git clone -q git://dev.laptop.org/users/wmb/multicast-nand" expand$ $sh
+ [then]
+ [else]
+ " rm -rf multicast-nand" $sh
+ " wget -q -O multicast-nand.tar.gz http://dev.laptop.org/git/users/wmb/multicast-nand/snapshot/multicast-nand-${MCNAND_VERSION}.tar.gz" expand$ $sh
+ " tar xfz multicast-nand.tar.gz" $sh
+ " mv multicast-nand-${MCNAND_VERSION} multicast-nand" expand$ $sh
+ " rm multicast-nand.tar.gz" $sh
+ [then]
+
+ " (cd multicast-nand; make BPDIR=../../../../../.. OFW_CPU=arm nandblaster15_rx.bin nandblaster_tx.bin; cp nandblaster15_rx.bin nandblaster_tx.bin ..)" expand$ $sh
+[else]
+ " (cd /home/wmb/Git/multicast-nand; make BPDIR=/home/wmb/ofw.test OFW_CPU=x86 nandblaster15_rx.bin nandblaster_tx.bin;)" $sh
+ " cp /home/wmb/Git/multicast-nand/*blaster*.bin ." expand$ $sh
+[then]
+
+\ This forces the creation of a .log file, so we don't re-fetch
+writing mcastnand.version
+" ${MCNAND_VERSION}"n" expand$ ofd @ fputs
+ofd @ fclose
Added: cpu/arm/olpc/1.75/mcnand-version.fth
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ cpu/arm/olpc/1.75/mcnand-version.fth Tue Jun 14 04:17:05 2011 (r2271)
@@ -0,0 +1,8 @@
+\ The multicast NAND updater code version
+\ Use a specific git commit ID for a formal release or "test" for development.
+\ With a specific ID, mcastnand.bth will download a tarball without .git stuff.
+\ With "test", mcastnand.bth will clone the git head if build/multicast-nand/
+\ is not already present, then you can modify the git subtree as needed.
+macro: MCNAND_VERSION 3975692c3311749185ec1ecba706388e3924a284
+\ macro: MCNAND_VERSION test
+\ macro: MCNAND_VERSION HEAD
Modified: cpu/arm/olpc/1.75/olpc.bth
==============================================================================
--- cpu/arm/olpc/1.75/olpc.bth Tue Jun 14 04:10:25 2011 (r2270)
+++ cpu/arm/olpc/1.75/olpc.bth Tue Jun 14 04:17:05 2011 (r2271)
@@ -3,6 +3,7 @@
command: &builder &this
in: ${BP}/cpu/arm/olpc/1.75/build/fw.img
in: ${BP}/cpu/arm/olpc/1.75/build/resetvec.img
+in: ${BP}/cpu/arm/olpc/1.75/build/mcastnand.bin
in: sd8686.bin
in: verify.img
in: ${BP}/dev/usb2/device/hub/build/hub.fc
@@ -143,10 +144,9 @@
" ${BP}/cpu/x86/pc/olpc/images/leds.di" $add-file
" ${BP}/cpu/x86/pc/olpc/images/ebook.di" $add-file
+ " ${BP}/cpu/arm/olpc/1.75/build/nandblaster15_rx.bin" " nb15_rx" $add-deflated-dropin
+ " ${BP}/cpu/arm/olpc/1.75/build/nandblaster_tx.bin" " nb_tx" $add-deflated-dropin
0 [if]
- " ${BP}/cpu/x86/pc/olpc/via/build/nandblaster15_rx.bin" " nb15_rx" $add-deflated-dropin
- " ${BP}/cpu/x86/pc/olpc/via/build/nandblaster_tx.bin" " nb_tx" $add-deflated-dropin
-
" ${BP}/cpu/x86/pc/olpc/images/tux.565" " tux.565" $add-deflated-dropin
" ${BP}/cpu/x86/pc/olpc/images/settings.565" " settings.565" $add-deflated-dropin
[then]
Modified: cpu/x86/pc/olpc/via/mcastnand.bth
==============================================================================
--- cpu/x86/pc/olpc/via/mcastnand.bth Tue Jun 14 04:10:25 2011 (r2270)
+++ cpu/x86/pc/olpc/via/mcastnand.bth Tue Jun 14 04:17:05 2011 (r2271)
@@ -6,22 +6,22 @@
fload ${BP}/cpu/x86/pc/olpc/via/mcnand-version.fth
1 [if]
-" ${MCNAND_VERSION}" expand$ " test" $= [if]
- " multicast-nand/Makefile" $file-exists? 0= [if]
- " git clone -q git://dev.laptop.org/users/wmb/multicast-nand" expand$ $sh
+ " ${MCNAND_VERSION}" expand$ " test" $= [if]
+ " multicast-nand/Makefile" $file-exists? 0= [if]
+ " git clone -q git://dev.laptop.org/users/wmb/multicast-nand" expand$ $sh
+ [then]
+ [else]
+ " rm -rf multicast-nand" $sh
+ " wget -q -O multicast-nand.tar.gz http://dev.laptop.org/git/users/wmb/multicast-nand/snapshot/multicast-nand-${MCNAND_VERSION}.tar.gz" expand$ $sh
+ " tar xfz multicast-nand.tar.gz" $sh
+ " mv multicast-nand-${MCNAND_VERSION} multicast-nand" expand$ $sh
+ " rm multicast-nand.tar.gz" $sh
[then]
-[else]
-" rm -rf multicast-nand" $sh
-" wget -q -O multicast-nand.tar.gz http://dev.laptop.org/git/users/wmb/multicast-nand/snapshot/multicast-nand-${MCNAND_VERSION}.tar.gz" expand$ $sh
-" tar xfz multicast-nand.tar.gz" $sh
-" mv multicast-nand-${MCNAND_VERSION} multicast-nand" expand$ $sh
-" rm multicast-nand.tar.gz" $sh
-[then]
-" (cd multicast-nand; make BPDIR=../../../../../../.. nandblaster15_rx.bin nandblaster_tx.bin; cp nandblaster15_rx.bin nandblaster_tx.bin ..)" expand$ $sh
+ " (cd multicast-nand; make BPDIR=../../../../../../.. OFW_CPU=x86 nandblaster15_rx.bin nandblaster_tx.bin; cp nandblaster15_rx.bin nandblaster_tx.bin ..)" expand$ $sh
[else]
-" (cd /home/wmb/Git/multicast-nand; make BPDIR=/home/wmb/ofw.test nandblaster15_rx.bin nandblaster_tx.bin;)" $sh
-" cp /home/wmb/Git/multicast-nand/*blaster*.bin ." expand$ $sh
+ " (cd /home/wmb/Git/multicast-nand; make BPDIR=/home/wmb/ofw.test OFW_CPU=x86 nandblaster15_rx.bin nandblaster_tx.bin;)" $sh
+ " cp /home/wmb/Git/multicast-nand/*blaster*.bin ." expand$ $sh
[then]
\ This forces the creation of a .log file, so we don't re-fetch
More information about the openfirmware
mailing list