[openfirmware] r913 - clients/lib clients/lib/x86 cpu/x86/pc cpu/x86/pc/neptune
svn at openfirmware.info
svn at openfirmware.info
Tue Sep 2 07:42:53 CEST 2008
Author: wmb
Date: 2008-09-02 07:42:53 +0200 (Tue, 02 Sep 2008)
New Revision: 913
Modified:
clients/lib/callofw.c
clients/lib/x86/makefile
cpu/x86/pc/neptune/fw.bth
cpu/x86/pc/reenter.fth
Log:
Neptune - allow rerunning ispVME without rebooting.
Modified: clients/lib/callofw.c
===================================================================
--- clients/lib/callofw.c 2008-09-02 02:45:16 UTC (rev 912)
+++ clients/lib/callofw.c 2008-09-02 05:42:53 UTC (rev 913)
@@ -6,14 +6,10 @@
*/
#include <stdarg.h>
-#include <asm/callofw.h>
-#include <linux/types.h>
-#include <linux/spinlock.h>
+typedef unsigned long u32;
-u32 (*call_firmware)(u32 *);
+extern u32 call_firmware(u32 *);
-static DEFINE_SPINLOCK(prom_lock);
-
#define MAXARGS 20
int callofw(char *name, int numargs, int numres, ...)
{
@@ -24,9 +20,6 @@
int *intp;
unsigned long flags;
- if (call_firmware == NULL)
- return -1;
-
argarray[0] = (u32)name;
argarray[1] = numargs;
argarray[2] = numres;
@@ -38,9 +31,7 @@
while (numargs--)
argarray[argnum++] = va_arg(ap, int);
- spin_lock_irqsave(&prom_lock, flags);
retval = call_firmware(argarray);
- spin_unlock_irqrestore(&prom_lock, flags);
if (retval == 0) {
while (numres--) {
Modified: clients/lib/x86/makefile
===================================================================
--- clients/lib/x86/makefile 2008-09-02 02:45:16 UTC (rev 912)
+++ clients/lib/x86/makefile 2008-09-02 05:42:53 UTC (rev 913)
@@ -3,51 +3,23 @@
# -fno-builtin has the effect of suppressing some warnings about
# functions that conflict with gcc builtins
CC=gcc
-CFLAGS=-g -m32 -fno-builtin -fno-stack-protector
+CFLAGS=-g -m32 -fno-builtin -fno-stack-limit -fno-stack-protector
all: libobp.a hello hello.elf start.o
# Create a library file containing all the library routines
-libobp.a: lib.o printf.o wrappers.o malloc.o strings.o printf.o debug.o main.o intprop.o regprop.o strprop.o mem.o
- ar rcv libobp.a lib.o malloc.o wrappers.o strings.o printf.o debug.o main.o intprop.o regprop.o strprop.o mem.o
+OBJS=lib.o printf.o wrappers.o malloc.o strings.o printf.o debug.o main.o intprop.o regprop.o strprop.o mem.o callofw.o
+
+libobp.a: ${OBJS}
+ ar rcv libobp.a ${OBJS}
ranlib libobp.a
# Build machine-independent library routines
-main.o: ../main.c
- ${CC} ${CFLAGS} -c ../main.c
+%.o: ../%.c
+ ${CC} ${CFLAGS} -c $<
-lib.o: ../lib.c
- ${CC} ${CFLAGS} -c ../lib.c
-
-printf.o: ../printf.c
- ${CC} ${CFLAGS} -c ../printf.c
-
-debug.o: ../debug.c
- ${CC} ${CFLAGS} -c ../debug.c
-
-strings.o: ../strings.c
- ${CC} ${CFLAGS} -c ../strings.c
-
-mem.o: ../mem.c
- ${CC} ${CFLAGS} -c ../mem.c
-
-intprop.o: ../intprop.c
- ${CC} ${CFLAGS} -c ../intprop.c
-
-regprop.o: ../regprop.c
- ${CC} ${CFLAGS} -c ../regprop.c
-
-strprop.o: ../strprop.c
- ${CC} ${CFLAGS} -c ../strprop.c
-
-wrappers.o: ../wrappers.c
- ${CC} ${CFLAGS} -c ../wrappers.c
-
-malloc.o: ../malloc.c
- ${CC} ${CFLAGS} -c ../malloc.c
-
# Build processor-specific startup code and call gateway
start.o: start.s
Modified: cpu/x86/pc/neptune/fw.bth
===================================================================
--- cpu/x86/pc/neptune/fw.bth 2008-09-02 02:45:16 UTC (rev 912)
+++ cpu/x86/pc/neptune/fw.bth 2008-09-02 05:42:53 UTC (rev 913)
@@ -165,10 +165,11 @@
fload ${BP}/ofw/elf/elf.fth
fload ${BP}/ofw/elf/elfdebug.fth
[ifdef] virtual-mode
-: (elf-map-in) ( va size -- ) swap 1 -rot allocate-aligned drop ;
-\ Depends on the assumption that physical memory is mapped 1:1 already
-\ : (elf-map-in) ( va size -- ) 0 mem-claim drop ;
-' (elf-map-in) is elf-map-in
+\ This version dynamically allocates physical memory
+\ : (elf-map-in) ( va size -- ) swap 1 -rot allocate-aligned drop ;
+
+\ This version depends on the assumption that physical memory is mapped 1:1 already
+: (elf-map-in) ( va size -- ) 2drop ;
[else]
: (elf-map-in) ( va size -- ) 2drop ;
[then]
@@ -178,6 +179,7 @@
\ Reboot and re-entry code
fload ${BP}/cpu/x86/pc/reboot.fth \ Restart the client program
fload ${BP}/cpu/x86/pc/reenter.fth \ Various entries into Forth
+true to client-rerun?
headerless
[ifdef] virtual-mode
@@ -198,8 +200,9 @@
\ The LPC FLASH chips decode several addresses below the FLASH "memory" array,
\ for "registers" used for programming and access to general purpose inputs.
-\ The FPGA programming program wants to access the GPI register at virtual
-\ address = physical address, so we pre-claim that range of virtual addresses.
+\ We pre-claim that range of virtual addresses just in case someone needs to
+\ access the LPC device with virtual-address = physical address. (OFW and
+\ ispVME both use dynamically-mapped virtual addresses for that region.)
: claim-lpc ( -- )
(initial-claim)
@@ -404,13 +407,8 @@
lpc-gpi0-pa value lpc-gpi-pa
: vme ( -- )
- ." Running Lattice programmer "
-
- lpc-gpi-pa lpc-gpi-pa h# 100 -1 mmu-map
\ verbose-cif
" rom:\isp u:\neptune.vme" $boot
-
- lpc-gpi-pa h# 100 mmu-unmap
;
fload ${BP}/cpu/x86/pc/neptune/versions.fth
Modified: cpu/x86/pc/reenter.fth
===================================================================
--- cpu/x86/pc/reenter.fth 2008-09-02 02:45:16 UTC (rev 912)
+++ cpu/x86/pc/reenter.fth 2008-09-02 05:42:53 UTC (rev 913)
@@ -28,6 +28,8 @@
\ Temporary hacks until we implement these functions correctly
+0 value client-rerun?
+
defer user-interface ' quit to user-interface
also client-services definitions
\ " reenter.fth: Implement 'exit' client service correctly" ?reminder
@@ -38,6 +40,7 @@
" restore" stdout @ ['] $call-method catch if 3drop then
" restore" stdin @ ['] $call-method catch if 3drop then
+ client-rerun? 0= to already-go?
user-interface
;
: enter ( -- ) interact ;
More information about the openfirmware
mailing list