diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-05-09 11:09:43 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-05-09 11:09:43 -0600 |
commit | db7257ad4894df88a59100a8849b156029fbcf21 (patch) | |
tree | a9d11941769c64bc9981c87e6a92c214708867a2 /apps/interpreters | |
parent | 892b3598fffb8e999493cbfa9c8bbf95855b0a48 (diff) | |
download | px4-nuttx-db7257ad4894df88a59100a8849b156029fbcf21.tar.gz px4-nuttx-db7257ad4894df88a59100a8849b156029fbcf21.tar.bz2 px4-nuttx-db7257ad4894df88a59100a8849b156029fbcf21.zip |
Move P-Code execution logic from interpreters/prun to system/prun
Diffstat (limited to 'apps/interpreters')
-rw-r--r-- | apps/interpreters/Kconfig | 2 | ||||
-rw-r--r-- | apps/interpreters/Make.defs | 4 | ||||
-rw-r--r-- | apps/interpreters/prun/.gitignore | 13 | ||||
-rw-r--r-- | apps/interpreters/prun/Kconfig | 14 | ||||
-rw-r--r-- | apps/interpreters/prun/Makefile | 105 | ||||
-rw-r--r-- | apps/interpreters/prun/README.txt | 34 | ||||
-rw-r--r-- | apps/interpreters/prun/prun.c | 130 | ||||
-rw-r--r-- | apps/interpreters/prun/prun.h | 55 |
8 files changed, 0 insertions, 357 deletions
diff --git a/apps/interpreters/Kconfig b/apps/interpreters/Kconfig index 0464b6c77..e95215517 100644 --- a/apps/interpreters/Kconfig +++ b/apps/interpreters/Kconfig @@ -15,6 +15,4 @@ config INTERPRETERS_PCODE Pascal run-time code. if INTERPRETERS_PCODE -source "$APPSDIR/interpreters/prun/Kconfig" endif - diff --git a/apps/interpreters/Make.defs b/apps/interpreters/Make.defs index 17364be39..5d808d5d6 100644 --- a/apps/interpreters/Make.defs +++ b/apps/interpreters/Make.defs @@ -38,10 +38,6 @@ ifeq ($(CONFIG_INTERPRETERS_PCODE),y) CONFIGURED_APPS += interpreters/pcode endif -ifeq ($(CONFIG_INTERPRETERS_PRUN),y) -CONFIGURED_APPS += interpreters/prun -endif - ifeq ($(CONFIG_INTERPRETERS_FICL),y) CONFIGURED_APPS += interpreters/ficl endif diff --git a/apps/interpreters/prun/.gitignore b/apps/interpreters/prun/.gitignore deleted file mode 100644 index 3e5ec9dcb..000000000 --- a/apps/interpreters/prun/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -/Make.dep -/.depend -/.built -/*.o1 -/*.asm -/*.obj -/*.rel -/*.lst -/*.sym -/*.adb -/*.lib -/*.src -/*.err diff --git a/apps/interpreters/prun/Kconfig b/apps/interpreters/prun/Kconfig deleted file mode 100644 index 1f8ba4695..000000000 --- a/apps/interpreters/prun/Kconfig +++ /dev/null @@ -1,14 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see misc/tools/kconfig-language.txt. -# - -config INTERPRETERS_PRUN - bool "Pascal P-Code interpreter" - default n - depends on INTERPRETERS_PCODE - ---help--- - Build the Pascal P-Code interpreter / Virtual machine - -if INTERPRETERS_PRUN -endif diff --git a/apps/interpreters/prun/Makefile b/apps/interpreters/prun/Makefile deleted file mode 100644 index 941284fae..000000000 --- a/apps/interpreters/prun/Makefile +++ /dev/null @@ -1,105 +0,0 @@ -############################################################################ -# apps/interpreters/prun/Makefile -# -# Copyright (C) 2014 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt <gnutt@nuttx.org> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name NuttX nor the names of its contributors may be -# used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -############################################################################ - --include $(TOPDIR)/.config --include $(TOPDIR)/Make.defs -include $(APPDIR)/Make.defs - -# Pascal P-Code interpreter / Virtual machine - -ifeq ($(WINTOOL),y) -INCDIROPT = -w -endif - -CFLAGS += ${shell $(INCDIR) $(INCDIROPT) "$(CC)" \ - "." \ - "$(APPDIR)$(DELIM)interpreters$(DELIM)pcode$(DELIM)include" \ - "$(APPDIR)$(DELIM)interpreters$(DELIM)pcode$(DELIM)insn$(DELIM)include"} - -ASRCS = -CSRCS = prun.c - -AOBJS = $(ASRCS:.S=$(OBJEXT)) -COBJS = $(CSRCS:.c=$(OBJEXT)) - -SRCS = $(ASRCS) $(CSRCS) -OBJS = $(AOBJS) $(COBJS) - -ifeq ($(CONFIG_WINDOWS_NATIVE),y) - BIN = ..\..\libapps$(LIBEXT) -else -ifeq ($(WINTOOL),y) - BIN = ..\\..\\libapps$(LIBEXT) -else - BIN = ../../libapps$(LIBEXT) -endif -endif - -ROOTDEPPATH = --dep-path . - -# Common build - -VPATH = - -all: .built -.PHONY: clean depend distclean - -$(AOBJS): %$(OBJEXT): %.S - $(call ASSEMBLE, $<, $@) - -$(COBJS): %$(OBJEXT): %.c - $(call COMPILE, $<, $@) - -.built: $(OBJS) - $(call ARCHIVE, $(BIN), $(OBJS)) - @touch .built - -context: - -.depend: Makefile $(SRCS) - @$(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >Make.dep - @touch $@ - -depend: .depend - -clean: - $(call DELFILE, .built) - $(call CLEAN) - -distclean: clean - $(call DELFILE, Make.dep) - $(call DELFILE, .depend) - --include Make.dep diff --git a/apps/interpreters/prun/README.txt b/apps/interpreters/prun/README.txt deleted file mode 100644 index 8287d6a6d..000000000 --- a/apps/interpreters/prun/README.txt +++ /dev/null @@ -1,34 +0,0 @@ -README -^^^^^^ - -hello.pas - - This is a sample "Hello, World!" Pascal Program - -hello.pex - - This is the compiled, linked P-Code executable that results - when hello.pas is compiled. - -hello.h - - This file defines an initialized C array holds a copy of - hello.pex. This file as created by: - - xxd -i hello.pex >hello.h - -mkhello.sh - - This is a scripts that can be used to rebuild both hello.pex - and hello.h. - -device.c - - The hello.pex file must be provided to the interpreter as a file - in the file system. Normally this would be done using real storage - medium. In this example, we will use device.c: - - device.c implements a simple device driver. Reads from this device - will access the in-memory copy of hello.pex This device driver is - registered as /dev/prun in the pseudo filesystem. - diff --git a/apps/interpreters/prun/prun.c b/apps/interpreters/prun/prun.c deleted file mode 100644 index 23235074e..000000000 --- a/apps/interpreters/prun/prun.c +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** - * apps/system/prun/prun.c - * - * Copyright (C) 2014 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <gnutt@nuttx.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include <nuttx/config.h> - -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <debug.h> - -#include <apps/interpreters/prun.h> - -#include "pexec.h" -#include "pedefs.h" -#include "prun.h" - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: prun - * - * Description: - * Execute/interpret a P-Code file. This function does not return until - * the P-code program terminates or until a fatal error occurs. - * - * Input Parameters: - * exepath - The full path to the P-Code binary. - * varsize - Size of the P-Code variable stack - * strsize - the size of the P-Code string stack. - * - * Returned Value: - * OK if the P-Code program successfully terminated; A negated errno value - * is returned on the event of any failure. - * - ****************************************************************************/ - -int prun(FAR char *exepath, size_t varsize, size_t strsize) -{ - FAR struct pexec_s *st; - int errcode; - int ret = OK; - - /* Load the POFF file into memory */ - - st = pload(exepath, varsize, varsize); - if (!st) - { - bdbg("ERROR: Could not load %s\n", exepath); - return -ENOEXEC; - } - - bvdbg("Loaded %s\n", exepath); - - /* Execute the P-Code program until a stopping condition occurs */ - - for (;;) - { - /* Execute the instruction; Check for exceptional conditions */ - - errcode = pexec(st); - if (errcode != eNOERROR) - { - break; - } - } - - if (errcode != eEXIT) - { - /* REVISIT: Select a more appropriated return errocode */ - - bdbg("ERROR: Runtime error 0x%02x -- Execution Stopped\n", errcode); - ret = -ENOEXEC; - } - - /* Clean up resources used by the interpreter */ - - bvdbg("Execution terminated\n"); - pexec_release(st); - return ret; -} diff --git a/apps/interpreters/prun/prun.h b/apps/interpreters/prun/prun.h deleted file mode 100644 index f9a3b843b..000000000 --- a/apps/interpreters/prun/prun.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** - * examples/prun/prun.h - * - * Copyright (C) 2008 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <gnutt@nuttx.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#ifndef __EXAMPLES_PASHELLO_H -#define __EXAMPLES_PASHELLO_H - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -/**************************************************************************** - * Definitions - ****************************************************************************/ - -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -/* Defined in device.c */ - -extern void hello_register(void); - -#endif /* __EXAMPLES_PASHELLO_H */ |