remove support for Beehive
authorAndrew Baumann <andrew.baumann@microsoft.com>
Mon, 23 Jan 2012 19:04:15 +0000 (11:04 -0800)
committerAndrew Baumann <andrew.baumann@microsoft.com>
Mon, 23 Jan 2012 19:04:15 +0000 (11:04 -0800)
see the mailing list discussion at the end of December 2011 for motivation

197 files changed:
README
capabilities/caps.hl
doc/007-Beehive/Beehive.tex [deleted file]
doc/007-Beehive/Hakefile [deleted file]
errors/errno.fugu
hake/Args.hs
hake/Beehive.hs [deleted file]
hake/RuleDefs.hs
hake/beehive-dM-noSTDC.txt [deleted file]
hake/beehive-dM.txt [deleted file]
hake/menu.lst.beehive [deleted file]
hake/symbolic_targets.mk
if/arch/beehive.if [deleted file]
if/intermon.if
if/monitor.if
if/platform/beehive.if [deleted file]
include/Hakefile
include/arch/beehive/_fpmath.h [deleted file]
include/arch/beehive/arch/inttypes.h [deleted file]
include/arch/beehive/arch/setjmp.h [deleted file]
include/arch/beehive/arch/stdint.h [deleted file]
include/arch/beehive/barrelfish/bmp_chan.h [deleted file]
include/arch/beehive/barrelfish/bulk_transfer_arch.h [deleted file]
include/arch/beehive/barrelfish/core_state_arch.h [deleted file]
include/arch/beehive/barrelfish/cpu_arch.h [deleted file]
include/arch/beehive/barrelfish/curdispatcher_arch.h [deleted file]
include/arch/beehive/barrelfish/dispatcher_arch.h [deleted file]
include/arch/beehive/barrelfish/invocations_arch.h [deleted file]
include/arch/beehive/barrelfish/lmp_chan_arch.h [deleted file]
include/arch/beehive/barrelfish/pmap_arch.h [deleted file]
include/arch/beehive/barrelfish/syscall_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/bmp.h [deleted file]
include/arch/beehive/barrelfish_kpi/cpu_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/dispatcher_shared_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/generic_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/lmp_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/paging_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/registers_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/spinlocks_arch.h [deleted file]
include/arch/beehive/barrelfish_kpi/unknown_arch.h [deleted file]
include/arch/beehive/beej7.h [deleted file]
include/arch/beehive/bench/bench_arch.h [deleted file]
include/arch/beehive/corearea.h [deleted file]
include/arch/beehive/dcache.h [deleted file]
include/arch/beehive/fenv.h [deleted file]
include/arch/beehive/float.h [deleted file]
include/arch/beehive/machine/_limits.h [deleted file]
include/arch/beehive/machine/endian.h [deleted file]
include/arch/beehive/regconvention.h [deleted file]
include/arch/beehive/simctrl.h [deleted file]
include/arch/beehive/stopcode.h [deleted file]
include/barrelfish/barrelfish.h
include/barrelfish/caddr.h
include/barrelfish/core_state.h
include/barrelfish/dispatcher.h
include/barrelfish/idc.h
include/barrelfish/idc_export.h
include/barrelfish/ump_impl.h
include/barrelfish/vspace_mmu_aware.h
include/barrelfish/waitset.h
include/barrelfish_kpi/capabilities.h
include/barrelfish_kpi/cpu.h
include/barrelfish_kpi/init.h
include/barrelfish_kpi/legacy_idc_buffer.h
include/barrelfish_kpi/syscalls.h
include/bexec.h [deleted file]
include/flounder/flounder_support_bmp.h [deleted file]
include/target/beehive/barrelfish/dispatcher_target.h [deleted file]
include/target/beehive/barrelfish_kpi/coredata_target.h [deleted file]
include/target/beehive/barrelfish_kpi/dispatcher_shared_target.h [deleted file]
include/thc/thcinternal.h
include/thc/thcsync.h
include/trace/trace.h
kernel/Hakefile
kernel/arch/beehive/Hakefile [deleted file]
kernel/arch/beehive/beekernel.h [deleted file]
kernel/arch/beehive/bmp.h [deleted file]
kernel/arch/beehive/boot.S [deleted file]
kernel/arch/beehive/context.S [deleted file]
kernel/arch/beehive/core1.S [deleted file]
kernel/arch/beehive/dcache.S [deleted file]
kernel/arch/beehive/exec.c [deleted file]
kernel/arch/beehive/findbits.S [deleted file]
kernel/arch/beehive/gdb_arch.c [deleted file]
kernel/arch/beehive/hyper.c [deleted file]
kernel/arch/beehive/init.c [deleted file]
kernel/arch/beehive/kputchar.c [deleted file]
kernel/arch/beehive/microbenchmarks.c [deleted file]
kernel/arch/beehive/misc.c [deleted file]
kernel/arch/beehive/page_mappings_arch.c [deleted file]
kernel/arch/beehive/ringbmp.c [deleted file]
kernel/arch/beehive/ringtest.S [deleted file]
kernel/arch/beehive/serial.c [deleted file]
kernel/arch/beehive/slave.S [deleted file]
kernel/arch/beehive/slavecode.mem [deleted file]
kernel/arch/beehive/startup_arch.c [deleted file]
kernel/arch/beehive/syscall.c [deleted file]
kernel/arch/x86/ipi_notify.c
kernel/capabilities.c
kernel/dispatch.c
kernel/include/arch/beehive/arch_gdb_stub.h [deleted file]
kernel/include/arch/beehive/conio.h [deleted file]
kernel/include/arch/beehive/hyper.h [deleted file]
kernel/include/arch/beehive/irq.h [deleted file]
kernel/include/arch/beehive/kputchar.h [deleted file]
kernel/include/arch/beehive/misc.h [deleted file]
kernel/include/arch/beehive/offsets.h [deleted file]
kernel/include/arch/beehive/paging_kernel_arch.h [deleted file]
kernel/include/dispatch.h
kernel/include/kernel.h
lib/barrelfish/Hakefile
lib/barrelfish/arch/beehive/bmp_chan.c [deleted file]
lib/barrelfish/arch/beehive/cswitch.S [deleted file]
lib/barrelfish/arch/beehive/dcache.S [deleted file]
lib/barrelfish/arch/beehive/dcachergn.c [deleted file]
lib/barrelfish/arch/beehive/debug.c [deleted file]
lib/barrelfish/arch/beehive/dispatch.c [deleted file]
lib/barrelfish/arch/beehive/entry.S [deleted file]
lib/barrelfish/arch/beehive/findbits.S [deleted file]
lib/barrelfish/arch/beehive/pmap_arch.c [deleted file]
lib/barrelfish/arch/beehive/syscalls.S [deleted file]
lib/barrelfish/arch/beehive/syscalls.c [deleted file]
lib/barrelfish/capabilities.c
lib/barrelfish/deferred.c
lib/barrelfish/dispatch.c
lib/barrelfish/domain.c
lib/barrelfish/flounder_support.c
lib/barrelfish/idc.c
lib/barrelfish/include/arch/beehive/arch/registers.h [deleted file]
lib/barrelfish/include/arch/beehive/arch/syscall.h [deleted file]
lib/barrelfish/include/arch/beehive/arch/threads.h [deleted file]
lib/barrelfish/include/threads.h
lib/barrelfish/init.c
lib/barrelfish/morecore.c
lib/barrelfish/spawn_client.c
lib/barrelfish/vspace/arch/beehive/layout.c [deleted file]
lib/barrelfish/vspace/memobj_anon.c
lib/barrelfish/vspace/memobj_pinned.c
lib/barrelfish/vspace/mmu_aware.c
lib/barrelfish/vspace/utils.c
lib/barrelfish/vspace/vspace.c
lib/bench/Hakefile
lib/bench/arch/beehive/bench_arch.c [deleted file]
lib/c/src/arch-beehive/jmp.S [deleted file]
lib/c/src/gdtoa/beehive/arith.h [deleted file]
lib/c/src/gdtoa/beehive/gd_qnan.h [deleted file]
lib/c/src/sys-barrelfish/sys_morecore.c
lib/crt/arch/beehive/crt0.S [deleted file]
lib/crt/crtbegin.c
lib/msun/beehive/fenv.c [deleted file]
lib/spawndomain/Hakefile
lib/spawndomain/arch/beehive/spawn_arch.c [deleted file]
lib/spawndomain/multiboot.c
lib/spawndomain/spawn.c
lib/spawndomain/spawn_vspace.c
lib/thc/thc.c
lib/thc/thcsync.c
tools/asmoffsets/asmoffsets.c
tools/flounder/Arch.hs
tools/flounder/BMP.hs [deleted file]
tools/flounder/GCBackend.hs
tools/flounder/GHBackend.hs
tools/flounder/Main.lhs
tools/harness/barrelfish.py
tools/harness/machines/__init__.py
tools/harness/machines/bsim.py [deleted file]
usr/bench/bmp_bench/Hakefile [deleted file]
usr/bench/bmp_bench/bb_pingpong.c [deleted file]
usr/bench/bmp_bench/bb_test.c [deleted file]
usr/bench/bmp_bench/bmpbench.c [deleted file]
usr/bench/bmp_bench/bmpbench.h [deleted file]
usr/bench/flounder_stubs/empty.c
usr/init/Hakefile
usr/init/init.c
usr/init/spawn.c
usr/init_null/Hakefile
usr/init_null/init_null.c
usr/mem_serv/Hakefile
usr/mem_serv/mem_serv.c
usr/mem_serv_dist/Hakefile
usr/mem_serv_dist/mem_serv.h
usr/monitor/Hakefile
usr/monitor/arch/beehive/boot.c [deleted file]
usr/monitor/arch/beehive/endpoint.c [deleted file]
usr/monitor/arch/beehive/inter.c [deleted file]
usr/monitor/arch/beehive/monitor_server.c [deleted file]
usr/monitor/bmp_support.c [deleted file]
usr/monitor/connection.h
usr/monitor/include/arch/beehive/monitor_invocations.h [deleted file]
usr/monitor/inter.c
usr/monitor/main.c
usr/monitor/monitor.h
usr/monitor/monitor_server.c
usr/monitor/rcap_db_common.c
usr/monitor/spawn.c
usr/ramfsd/main.c
usr/spawnd/bsp_bootup.c

diff --git a/README b/README
index 996059e..d7f766f 100644 (file)
--- a/README
+++ b/README
@@ -30,10 +30,9 @@ on each new machine we test. The following systems are known to work:
  * Lenovo X200 and X301 laptops
  * ASUS Eee PC 1015PEM netbooks
 
-In addition, ports to the ARM and Beehive processor architectures are in
-progress. These are less complete than the x86 and SCC ports, and are
-not described in this document, but feel free to ask for help on the
-mailing list.
+In addition, a port to the ARM architectures is in progress. This is 
+less complete than the x86 and SCC ports, and not described in this 
+document, but feel free to ask for help on the mailing list.
 
 The e1000n driver should work with most recent Intel gigabit ethernet
 controllers (see the list in devices/e1000.dev). We've mostly used the
index 4fe269b..b438a0a 100644 (file)
@@ -302,17 +302,6 @@ cap Notify_IPI {
     eq uint16 chanid;
 };
 
-/* Beehive HW message passing endpoint */
-cap BMPEndPoint {
-    eq uint8 coreid;
-    eq uint16 chanid;
-};
-
-cap BMPTable {
-    /* BMP association table */
-    is_always_copy;
-};
-
 cap Domain {
     /* Domain capability (opaque type, used by the monitors) */
     eq uint32 domainid;
diff --git a/doc/007-Beehive/Beehive.tex b/doc/007-Beehive/Beehive.tex
deleted file mode 100644 (file)
index e9f7bb2..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Copyright (c) 2011, ETH Zurich.
-% All rights reserved.
-%
-% This file is distributed under the terms in the attached LICENSE file.
-% If you do not find this file, copies can be found by writing to:
-% ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass[a4paper,twoside]{report} % for a report (default)
-
-\usepackage{bftn,color} % You need this
-
-\title{Barrelfish on the Beehive experimental platform}   % title of report
-\author{Richard Black} % author
-\tnnumber{007}  % give the number of the tech report
-\tnkey{Beehive} % Short title, will appear in footer
-
-% \date{Month Year} % Not needed - will be taken from version history
-
-%% \newcommand{\note}[1]{}
-\newcommand{\note}[1]{[\textcolor{red}{\textit{#1}}]}
-
-\begin{document}
-\maketitle
-
-%
-% Include version history first
-%
-\begin{versionhistory}
-\vhEntry{1.0}{14.06.2010}{RJB}{Initial version}
-%\vhEntry{1.01}{14.06.2010}{AS}{Added discussion of design and unresolved issues}
-\end{versionhistory}
-
-% \intro{Abstract}             % Insert abstract here
-% \intro{Acknowledgements}     % Uncomment (if needed) for acknowledgements
-% \tableofcontents             % Uncomment (if needed) for final draft
-% \listoffigures               % Uncomment (if needed) for final draft
-% \listoftables                        % Uncomment (if needed) for final draft
-
-\chapter{Introduction}
-
-This report describes the port of the Barrlelfish operating system to
-the Beehive multi-core experimental platform.
-
-\note{This is what a note does.}
-
-\note{summarise chapters}
-
-\note{executive summary}
-
-\chapter{Barrelfish implementation on Beehive}
-
-\section{Hypervisor}
-
-\section{Memory map}
-
-\section{System calls}
-
-\section{Timer interrupts}
-
-\section{BMP interconnect driver}
-
-\emph{Beehive} is an experimental FPGA-based multicore architecture
-under development at Microsoft Research\cite{beehive:hwman} targeting
-the RAMP BEE-3 platform\cite{davis:bee3}. The current design has 13
-RISC cores on a ring network with a memory controller, gigabit
-Ethernet, and other IO devices. Like SCC, each core has a private
-non-coherent cache and hardware support for message passing. However,
-Beehive's message-passing mechanism bypasses the caches and memory
-system entirely.  Each core may directly send a message of up to 63
-words to another core on the ring.  Incoming messages are placed in a
-FIFO which can be cheaply (three cycles) polled. The FIFO holds 1024
-words and has no hardware flow control -- software must ensure that it
-does not overflow.
-
-As with SCC, the challenge for a Beehive interconnect driver is to
-provide secure efficient multiplexing of the shared hardware message
-channel.  We do this at two levels. Between CPU drivers, a single
-point-to-point message channel is implemented with credit-based flow
-control, with 64 words of the 1024-word buffer reserved for each
-sender core.  User channels are multiplexed over this by prepending a
-one-word header to each message. At user-level, the interconnect
-driver similarly maintains an incoming message buffer. The generated
-stubs pack message arguments into variable-length fragments of up to
-57 words of payload (the remainder is used for headers or reserved for
-credit messages), perform flow-control on the user-level buffer, and
-handle incoming messages when notified by the interconnect driver.
-
-\subsection{Kernel BMP protocol}
-
-At the hardware level messages have a single word header containing
-the length of the message, the core number and the type followed by
-between 1 and 63 words of payload.  Messages of length zero are
-reserved for communication between the master core and the debug unit.
-A single type (2) is used for BMP messages.  Each core has a 1024 word
-FIFO which must not overflow.
-
-To ensure that the FIFO does not overflow the kernel BMP components
-use a credit based flow control mechanism.  The first word of the
-message (after the hardware header) is divided into two fields; one of
-which contains any credit being sent, and the other provides
-demultiplexing into multiple user level channels.
-
-Each core is initialised with 64 words of credit for each other core
-and once this is consumed transmission must wait for credit to be sent
-from the destination.  The sending of a credit acknowledgement also
-requires space in the destination FIFO and so itself consumes credit.
-To avoid sending a credit acknowledgement for a credit
-acknowledgement, credits are not sent if the available amount is less
-than or equal to 2 words.
-
-When sending a message the code ensures that it has enough credit to
-send the message and still have 2 words of credit remaining.  This
-permits it to send an acknowledgement for the other core without first
-having to wait for an acknowledgment from the other core, which seems
-sufficient to avoid deadlocking (but may not strictly be necessary).
-
-The MTU for BMP messages is calculated as follows.  The hardware
-supports 64 words, 62 plus kernel BMP header plus header, but this is
-also the flow control limit.  Since we might have sent an ACK already
-which is not acked a common value of credit is 62.  Since we have to
-keep enough credit to be able to send an ACK subsequent to sending a
-message, the maximum sized message is 60 words, i.e. 58 words of
-payload.
-
-As a possible future change, we observe that core 0 is always the DRAM
-controller, and cores do not need to send themselves messages,
-therefore there are a maximum of 14 cores on the ring to divide out
-the FIFO between.  This would permit 73 words of credit per core
-rather than 64 which would translate into a kernel MTU of 67 instead
-of 58 words.
-
-\subsection{Kernel BMP processing}
-
-The state machine for processing BMP has to take carefully into
-consideration the fact that there are no interrupts for the FIFO, or
-for timers, the multiplexed nature of the FIFO, and the neccessity to
-receive credit in order to trasnmit.
-
-One entry point is when the core is idle; the FIFO should be processed
-completely until it is idle with any incoming message potentially
-causing a domain to become runnable and the scheduler then being
-called.  Once the FIFO is idle it should continue to be polled until
-the timer interrupt fire.  During this time credit acknowledgements
-must be sent as appropriate.
-
-The second entry point is when a send is desired.  This has to deal
-with the possibility that there is insufficient credit.  If there is
-insufficient credit then the code must process messages, delivering
-them on incoming channels, and sending and receiving credit, until
-there is enough credit to send the required message.  Then the message
-can be sent.  After the message is sent the FIFO must again be
-processed until it is idle.
-
-Note that if a message is desired to be sent when there is
-insufficient credit the code currently processes the FIO until there
-is credit which can be a substantially long time.  An alternative
-would be to return a ``busy'' code the caller which would have the
-difficulty that it is impossible to subsequently advise when a retry
-might succeed.
-
-To mitigate busy waiting on transmit the third entry point is called
-on a timer tick before the scheduler is called.  This once again
-processes the FIFO until it is idle (including the sending of
-acknowledgements).  This processing has the benefit of providing the
-scheduler with as much information as possible before the timer tick
-is delivered.
-
-There is an additional entry point that currently for debug purposes
-the \texttt{sys\_nop} system call also pumps messages from the FIFO.
-
-The \texttt{sys\_yield} call currently does not pump the FIFO, but
-probably should.
-
-\subsection{User-level BMP component}
-
-\chapter{Performance measurements}
-
-Several unconventional features of Beehive make performance of any
-communication system a challenge.  In particular, the small,
-direct-mapped instruction cache and low instruction density mean 
-I-cache miss rate tends to dominate performance.
-We found that a single word echo between user programs on
-different cores has a latency of 56k$\pm$1k cycles with more than 80\%
-of this cost attributable to I-cache misses (each taking
-$\approx54$ cycles).
-
-It is more instructive to look at the count of instructions executed,
-even though instruction density is low.  It takes about 2900
-instructions to send a request: 230 in user stubs,
-630 in the capability invocation, 100 in sending the message, 600
-returning from the system call, and 1300 for stubs, threads package
-and kernel to idle. 
-
-The receive path is about 3200 instructions: 100
-to receive the message in the CPU driver, 570 to look up the endpoint
-capability and copy the message to the user's channel buffer, 480 to
-make the process runnable, and a further 2000 to upcall the process
-and dispatch the message through the stub to application code.
-
-While the performance of the processor is low, and both Barrelfish
-and the FPGA processor core have scope for optimization,
-the interconnect driver does provide secure multiplexed
-messaging on this non-cache-coherent hardware at a cost which is low
-considering the general cost of execution on the platform.
-
-
-
-\chapter{General observations}
-
-\bibliographystyle{abbrvnat}
-\bibliography{defs,barrelfish}
-
-\end{document}
diff --git a/doc/007-Beehive/Hakefile b/doc/007-Beehive/Hakefile
deleted file mode 100644 (file)
index 5aef060..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-----------------------------------------------------------------------
--- Copyright (c) 2010, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
---
--- Hakefile for /doc/007-Beehive
---
-----------------------------------------------------------------------
-
-[ buildTechNote "Beehive.tex" "TN-007-Beehive.pdf" True False [] ]
index a239079..b2c6835 100644 (file)
@@ -31,9 +31,6 @@ errors kernel SYS_ERR_ {
     failure LRPC_NOT_ENDPOINT   "Slot specified for LRPC does not contain an endpoint cap",
     failure INVALID_EPLEN       "Endpoint buffer has invalid length",
 
-    // BMP (Beehive messaging)
-    failure BMP_TX_BUSY         "BMP send failed; insufficient TX credits to remote core",
-
     // XXX: this should go away -AB
     failure IDC_MSG_BOUNDS      "Attempted to retrieve a word beyond the size of an LMP message structure",
 
@@ -81,12 +78,6 @@ errors kernel SYS_ERR_ {
     // IO capability
     failure IO_PORT_INVALID     "IO port out of range",
 
-    // errors related to BMP table
-    failure BMP_LOOKUP          "Specified capability was not found while inserting in IRQ table",
-    failure BMP_NOT_ENDPOINT    "Specified capability is not an endpoint cap",
-    failure BMP_NO_LISTENER     "No listener on specified endpoint cap", // ??
-    failure BMP_INVALID         "BMP association ID out of range",
-
     // Dispatcher setup and spawn core invocations
     failure DISP_CSPACE_ROOT    "Error setting CSpace root on dispatcher",
     failure DISP_CSPACE_INVALID "Invalid capability type given for CSpace root on dispatcher",
@@ -244,7 +235,7 @@ errors libbarrelfish LIB_ERR_ {
     failure CORESET_NEW             "Failure in coreset_new()",
     failure CORESET_GET_NEXT_DONE   "No more elements left in coreset_get_next()",
 
-    // IDC (and LMP/UMP/BMP channels)
+    // IDC (and LMP/UMP channels)
     failure NO_LMP_MSG          "No LMP message available",
     failure LMP_RECV_BUF_OVERFLOW "LMP message in endpoint is longer than user-provided buffer",
     failure NO_UMP_MSG          "No UMP message available",
@@ -261,18 +252,13 @@ errors libbarrelfish LIB_ERR_ {
     failure CHAN_DEREGISTER_RECV "Failure in *_chan_deregister_recv()",
     failure LMP_CHAN_INIT       "Failure in lmp_chan_init()",
     failure UMP_CHAN_INIT       "Failure in ump_chan_init()",
-    failure BMP_CHAN_INIT       "Failure in bmp_chan_init()",
     failure LMP_CHAN_RECV       "Failure in lmp_chan_recv()",
     failure UMP_CHAN_RECV       "Failure in ump_chan_recv()",
-    failure BMP_CHAN_RECV       "Failure in bmp_chan_recv()",
     failure LMP_CHAN_SEND       "Failure in lmp_chan_send()",
-    failure BMP_CHAN_SEND       "Failure in bmp_chan_send()",
     failure LMP_CHAN_BIND       "Failure in lmp_chan_bind()",
     failure UMP_CHAN_BIND       "Failure in ump_chan_bind()",
-    failure BMP_CHAN_BIND       "Failure in bmp_chan_bind()",
     failure LMP_CHAN_ACCEPT     "Failure in lmp_chan_accept()",
     failure UMP_CHAN_ACCEPT     "Failure in ump_chan_accept()",
-    failure BMP_CHAN_ACCEPT     "Failure in bmp_chan_accept()",
     failure LMP_ALLOC_RECV_SLOT "Failure in lmp_chan_alloc_recv_slot()",
     failure LMP_NOT_CONNECTED   "Channel is disconnected",
     failure MSGBUF_OVERFLOW     "Attempted to demarshall beyond bounds of message buffer",
@@ -286,13 +272,10 @@ errors libbarrelfish LIB_ERR_ {
     failure NAMESERVICE_NOT_BOUND "Name service client is not bound",
     failure BIND_LMP_REQ        "Failure sending bind_lmp_request to monitor",
     failure BIND_UMP_REQ        "Failure sending bind_ump_request to monitor",
-    failure BIND_BMP_REQ        "Failure sending bind_bmp_request to monitor",
     failure BIND_LMP_REPLY      "Failure sending bind_lmp_reply to monitor",
     failure BIND_UMP_REPLY      "Failure sending bind_ump_reply to monitor",
-    failure BIND_BMP_REPLY      "Failure sending bind_bmp_reply to monitor",
     failure NO_LMP_BIND_HANDLER "LMP connection handler not registered for this service",
     failure NO_UMP_BIND_HANDLER "UMP connection handler not registered for this service",
-    failure NO_BMP_BIND_HANDLER "BMP connection handler not registered for this service",
     failure MONITOR_CAP_SEND    "Failed sending capability via monitor",
     failure MONITOR_RPC_BIND    "Error in monitor_rpc_init()",
 
@@ -604,7 +587,6 @@ errors init INIT_ERR_ {
     failure COPY_PACN_CAP       "Failed to copy phys addr CNode cap to monitor",
     failure COPY_IRQ_CAP        "Failed to copy IRQ cap to monitor",
     failure COPY_IO_CAP         "Failed to copy IO cap to monitor",
-    failure COPY_BMP_CAP        "Failed to copy BMP cap to monitor",
     failure COPY_UMP_CAP        "Failed to copy UMP cap to monitor",
     failure NO_MATCHING_RAM_CAP "No suitably-sized RAM cap found when initialising local memory allocator",
 };
index 3a45f75..508d879 100644 (file)
@@ -68,12 +68,12 @@ defaultArgs = Args {
       architectures = allArchitectures
 }
 
-allArchitectures = [ "x86_64", "x86_32", "arm", "arm11mp", "beehive", "scc", "xscale" ]
-allArchitectureFamilies = [ "x86_64", "x86_32", "arm", "beehive", "scc" ]
+allArchitectures = [ "x86_64", "x86_32", "arm", "arm11mp", "scc", "xscale" ]
+allArchitectureFamilies = [ "x86_64", "x86_32", "arm", "scc" ]
 
 -- all known flounder backends that we might want to generate defs for
 allFlounderBackends
-    = [ "lmp", "ump", "ump_ipi", "bmp", "loopback", "rpcclient", "msgbuf", "multihop", "ahci" ]
+    = [ "lmp", "ump", "ump_ipi", "loopback", "rpcclient", "msgbuf", "multihop", "ahci" ]
 
 defaultBuildFn :: [String] -> String -> Args -> HRule
 defaultBuildFn _ f _ = 
diff --git a/hake/Beehive.hs b/hake/Beehive.hs
deleted file mode 100644 (file)
index c8c293f..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
---------------------------------------------------------------------------
--- Copyright (c) 2009, 2010, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
---
--- Architectural definitions for Barrelfish on Beehive.
--- 
---------------------------------------------------------------------------
-
-module Beehive where
-
-import List
-import HakeTypes
-import Path
-import qualified Config
-import qualified ArchDefaults
-
--------------------------------------------------------------------------
---
--- Architecture specific definitions for Beehive
---
--------------------------------------------------------------------------
-
-arch = "beehive"
-archFamily = "beehive"
-
-cpp      = "cpp"
-compiler = "Bcc"
-cxxcompiler = "Bcc"
-objcopy  = "Beehive-is-not-a-gnu-bfd-target"
-objdump  = "Beehive-is-not-a-gnu-bfd-target"
-ar       = "Bar"
-ranlib   = "Branlib"
-
-
-ourCommonFlags = [ Str "-fno-omit-frame-pointer" ]
-ourExcludeFlags = [ Str "-Ulinux", Str "-U__linux__", Str "-g" ]
-
-
-cFlags = [ f | f <- ( ArchDefaults.commonCFlags ++ 
-                      ArchDefaults.commonFlags ++ 
-                      ourCommonFlags ) \\ ourExcludeFlags ]
-
-cxxFlags = [ f | f <- ( ArchDefaults.commonCxxFlags ++ 
-                        ArchDefaults.commonFlags ++ 
-                        ourCommonFlags ) \\ ourExcludeFlags ]
-
-cDefines = ArchDefaults.cDefines options
-cStdIncs = ArchDefaults.cStdIncs arch archFamily
-
-ldFlags = [ Str $ unwords $ (words Config.cOptFlags) \\ ["-g"],
-            Str "-Wl,-N",
-            Str "-Wl,-codebase=0", Str "-Wl,-datafloat",
-            In InstallTree arch "/lib/crt0.o",
-            In InstallTree arch "/lib/crtbegin.o", 
-            Str "-fno-builtin" ]
-
-ldCxxFlags = ldFlags
-
-stdLibs = ArchDefaults.stdLibs arch 
-          ++ [ Str "-lgcc" ]
-
-options = (ArchDefaults.options arch archFamily) { 
-            optFlags = cFlags,
-            optCxxFlags = cxxFlags,
-            optDefines = cDefines,
-            optLdFlags = ldFlags,
-            optLdCxxFlags = ldCxxFlags,
-            optLibs = stdLibs,
-            optInterconnectDrivers = ["lmp", "bmp"],
-            optFlounderBackends = ["lmp", "bmp"]
-          }
-
---
--- The kernel is "different"
---
-
-kernelCFlags = [ Str s | s <- [ "-fno-builtin",
-                                "-fno-omit-frame-pointer",
-                                "-nostdinc",
-                                "-std=c99",
-                                "-Wall",
-                                "-Wshadow",
-                                "-Wstrict-prototypes",
-                                "-Wold-style-definition",
-                                "-Wmissing-prototypes",
-                                "-Wmissing-declarations",
-                                "-Wmissing-field-initializers",
-                                "-Wredundant-decls",
-                                "-Werror",
-                                "-imacros deputy/nodeputy.h" ]]
-                                -- "-Wmissing-noreturn" ]]
-
-kernelLdFlags = [ Str "-Wl,-N",
-                  Str "-Wl,-codebase=2000", Str "-Wl,-datafloat",
-                  NStr "-Wl,-map,", Out arch "kernel.map",
-                  Str "-fno-builtin"
-                ]
-
-
-------------------------------------------------------------------------
---
--- Now, commands to actually do something
---
-------------------------------------------------------------------------
-
---
--- Compilers
---
-cCompiler = ArchDefaults.cCompiler arch compiler
-cPreprocessor = ArchDefaults.cPreprocessor arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
-linker = ArchDefaults.linker arch compiler
-cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
-
---
--- Create a library from a set of object files
---
-
---
--- Create a library from a set of object files
---
-archive :: Options -> [String] -> String -> [ RuleToken ]
-archive opts objs libname =
-    [ Str "rm -f ", Out arch libname ]
-    ++ 
-    [ NL, Str (ar ++ " cr "), Out arch libname ] 
-    ++ 
-    [ In BuildTree arch o | o <- objs ]
-    ++ 
-    [ NL, Str ranlib, Out arch libname ]
-
---
--- Create C file dependencies
---
-makeDepend opts phase src obj depfile =
-    let incls = (optIncludes opts) ++ (extraIncludes opts)
-        flags = (optFlags opts) 
-                ++ (optDefines opts)
-                ++ [ Str f | f <- extraFlags opts ]
-                ++ [ Str f | f <- extraDefines opts ]
-        cpp_undef = "-undef -U__unix -U__unix__ -Uunix -U__CYGWIN__ -U__CYGWIN32__"
-    in
-      [ Str ('@':cpp), Str cpp_undef,
-        Str "-imacros", NoDep SrcTree "src" "/hake/beehive-dM-noSTDC.txt" ]
-      ++ filter (\f -> not (isPrefixOf "-Wmissing-field-initializers" (formatToken f))) flags
-      ++ [ Str "-nostdinc -std=c99 -imacros" ] 
-      ++ [ NoDep SrcTree "src" "/include/deputy/nodeputy.h" ]
-      ++ concat [ [ NStr "-I", i ] | i <- incls ] 
-      ++ (optDependencies opts) ++ (extraDependencies opts)
-      ++ [ Str "-M -MF", 
-           Out arch depfile,
-           Str "-MQ", NoDep BuildTree arch obj, 
-           Str "-MQ", NoDep BuildTree arch depfile,
-           In (if phase == "src" then SrcTree else BuildTree) phase src
-         ] 
-
-makeCxxDepend = makeDepend
-
---
--- Link the kernel (CPU Driver)
--- 
-
-linkKernel :: Options -> [String] -> [String] -> String -> HRule
-linkKernel opts objs libs kbin = 
-    Rules [ Rule (
-           [ Str compiler ]
-           ++ (optLdFlags opts)
-           ++ (extraLdFlags opts)
-           ++ [ Str "-o", Out arch kbin ]
-           ++ [ In BuildTree arch o | o <- objs ]
-           ++ [ In BuildTree arch l | l <- libs ]
-           ++ [ Str "-lgcc" ]
-    ) ]
index e82635d..f17a1d4 100644 (file)
@@ -19,7 +19,6 @@ import qualified X86_32
 import qualified SCC
 import qualified ARM
 import qualified ARM11MP
-import qualified Beehive
 import qualified XScale
 import HakeTypes
 import qualified Args
@@ -81,7 +80,6 @@ options "x86_32" = X86_32.options
 options "scc" = SCC.options
 options "arm" = ARM.options
 options "arm11mp" = ARM11MP.options
-options "beehive" = Beehive.options
 options "xscale" = XScale.options
 
 kernelCFlags "x86_64" = X86_64.kernelCFlags
@@ -89,7 +87,6 @@ kernelCFlags "x86_32" = X86_32.kernelCFlags
 kernelCFlags "scc" = SCC.kernelCFlags
 kernelCFlags "arm" = ARM.kernelCFlags
 kernelCFlags "arm11mp" = ARM11MP.kernelCFlags
-kernelCFlags "beehive" = Beehive.kernelCFlags
 kernelCFlags "xscale" = XScale.kernelCFlags
 
 kernelLdFlags "x86_64" = X86_64.kernelLdFlags
@@ -97,7 +94,6 @@ kernelLdFlags "x86_32" = X86_32.kernelLdFlags
 kernelLdFlags "scc" = SCC.kernelLdFlags
 kernelLdFlags "arm" = ARM.kernelLdFlags
 kernelLdFlags "arm11mp" = ARM11MP.kernelLdFlags
-kernelLdFlags "beehive" = Beehive.kernelLdFlags
 kernelLdFlags "xscale" = XScale.kernelLdFlags
 
 archFamily :: String -> String
@@ -168,13 +164,11 @@ cCompiler opts phase src obj
     | optArch opts == "scc"     = SCC.cCompiler opts phase src obj
     | optArch opts == "arm"     = ARM.cCompiler opts phase src obj
     | optArch opts == "arm11mp" = ARM11MP.cCompiler opts phase src obj
-    | optArch opts == "beehive" = Beehive.cCompiler opts phase src obj
     | optArch opts == "xscale" = XScale.cCompiler opts phase src obj
     | otherwise = [ ErrorMsg ("no C compiler for " ++ (optArch opts)) ]
 
 cPreprocessor :: Options -> String -> String -> String -> [ RuleToken ]
 cPreprocessor opts phase src obj
-    | optArch opts == "beehive" = Beehive.cPreprocessor opts phase src obj
     | otherwise = [ ErrorMsg ("no C preprocessor for " ++ (optArch opts)) ]
 
 --
@@ -183,7 +177,6 @@ cPreprocessor opts phase src obj
 cxxCompiler :: Options -> String -> String -> String -> [ RuleToken ]
 cxxCompiler opts phase src obj
     | optArch opts == "x86_64"  = X86_64.cxxCompiler opts phase src obj
-    | optArch opts == "beehive" = Beehive.cxxCompiler opts phase src obj
     | otherwise = [ ErrorMsg ("no C++ compiler for " ++ (optArch opts)) ]
 
 
@@ -202,8 +195,6 @@ makeDepend opts phase src obj depfile
         ARM.makeDepend opts phase src obj depfile
     | optArch opts == "arm11mp" = 
         ARM11MP.makeDepend opts phase src obj depfile
-    | optArch opts == "beehive" = 
-        Beehive.makeDepend opts phase src obj depfile
     | optArch opts == "xscale" = 
         XScale.makeDepend opts phase src obj depfile
     | otherwise = [ ErrorMsg ("no dependency generator for " ++ (optArch opts)) ]
@@ -212,8 +203,6 @@ makeCxxDepend :: Options -> String -> String -> String -> String -> [ RuleToken
 makeCxxDepend opts phase src obj depfile
     | optArch opts == "x86_64" = 
         X86_64.makeCxxDepend opts phase src obj depfile
-    | optArch opts == "beehive" = 
-        Beehive.makeCxxDepend opts phase src obj depfile
     | otherwise = [ ErrorMsg ("no C++ dependency generator for " ++ (optArch opts)) ]
 
 cToAssembler :: Options -> String -> String -> String -> String -> [ RuleToken ]
@@ -223,7 +212,6 @@ cToAssembler opts phase src afile objdepfile
     | optArch opts == "scc"     = SCC.cToAssembler opts phase src afile objdepfile
     | optArch opts == "arm"     = ARM.cToAssembler opts phase src afile objdepfile
     | optArch opts == "arm11mp" = ARM11MP.cToAssembler opts phase src afile objdepfile
-    | optArch opts == "beehive" = Beehive.cToAssembler opts phase src afile objdepfile
     | optArch opts == "xscale" = XScale.cToAssembler opts phase src afile objdepfile
     | otherwise = [ ErrorMsg ("no C compiler for " ++ (optArch opts)) ]
 
@@ -237,7 +225,6 @@ assembler opts src obj
     | optArch opts == "scc"     = SCC.assembler opts src obj
     | optArch opts == "arm"     = ARM.assembler opts src obj
     | optArch opts == "arm11mp" = ARM11MP.assembler opts src obj
-    | optArch opts == "beehive" = Beehive.assembler opts src obj
     | optArch opts == "xscale" = XScale.assembler opts src obj
     | otherwise = [ ErrorMsg ("no assembler for " ++ (optArch opts)) ]
 
@@ -248,7 +235,6 @@ archive opts objs libname
     | optArch opts == "scc"     = SCC.archive opts objs libname
     | optArch opts == "arm"     = ARM.archive opts objs libname
     | optArch opts == "arm11mp" = ARM11MP.archive opts objs libname
-    | optArch opts == "beehive" = Beehive.archive opts objs libname
     | optArch opts == "xscale" = XScale.archive opts objs libname
     | otherwise = [ ErrorMsg ("Can't build a library for " ++ (optArch opts)) ]
 
@@ -259,7 +245,6 @@ linker opts objs libs bin
     | optArch opts == "scc"    = SCC.linker opts objs libs bin
     | optArch opts == "arm" = ARM.linker opts objs libs bin
     | optArch opts == "arm11mp" = ARM11MP.linker opts objs libs bin
-    | optArch opts == "beehive" = Beehive.linker opts objs libs bin
     | optArch opts == "xscale" = XScale.linker opts objs libs bin
     | otherwise = [ ErrorMsg ("Can't link executables for " ++ (optArch opts)) ]
 
@@ -720,7 +705,6 @@ linkKernel opts name objs libs
     | optArch opts == "scc"    = SCC.linkKernel opts objs [libraryPath l | l <- libs ] kernelPath
     | optArch opts == "arm" = ARM.linkKernel opts objs [libraryPath l | l <- libs ] kernelPath
     | optArch opts == "arm11mp" = ARM11MP.linkKernel opts objs [libraryPath l | l <- libs ] kernelPath
-    | optArch opts == "beehive" = Beehive.linkKernel opts objs [libraryPath l | l <- libs ] kernelPath
     | optArch opts == "xscale" = XScale.linkKernel opts objs [libraryPath l | l <- libs ] kernelPath
     | otherwise = 
         Rule [ Str ("Error: Can't link kernel for '" ++ (optArch opts) ++ "'") ]
diff --git a/hake/beehive-dM-noSTDC.txt b/hake/beehive-dM-noSTDC.txt
deleted file mode 100644 (file)
index 9c4015f..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#define __DBL_MIN_EXP__ (-1021)\r
-#define __FLT_MIN__ 1.17549435e-38F\r
-#define __DEC64_DEN__ 0.000000000000001E-383DD\r
-#define __CHAR_BIT__ 8\r
-#define __WCHAR_MAX__ 2147483647\r
-#define __DBL_DENORM_MIN__ 4.9406564584124654e-324\r
-#define __FLT_EVAL_METHOD__ 0\r
-#define __DBL_MIN_10_EXP__ (-307)\r
-#define __FINITE_MATH_ONLY__ 0\r
-#define __GNUC_PATCHLEVEL__ 3\r
-#define __DEC64_MAX_EXP__ 384\r
-#define __SHRT_MAX__ 32767\r
-#define __LDBL_MAX__ 1.7976931348623157e+308L\r
-#define __UINTMAX_TYPE__ long long unsigned int\r
-#define __DEC32_EPSILON__ 1E-6DF\r
-#define __CHAR_UNSIGNED__ 1\r
-#define __LDBL_MAX_EXP__ 1024\r
-#define __SCHAR_MAX__ 127\r
-#define __DBL_DIG__ 15\r
-#define __SIZEOF_INT__ 4\r
-#define __SIZEOF_POINTER__ 4\r
-#define __USER_LABEL_PREFIX__ _\r
-#define __LDBL_HAS_INFINITY__ 1\r
-#define __BEEHIVE__ 1\r
-#define __FLT_EPSILON__ 1.19209290e-7F\r
-#define __LDBL_MIN__ 2.2250738585072014e-308L\r
-#define __DEC32_MAX__ 9.999999E96DF\r
-#define __SIZEOF_LONG__ 4\r
-#define __DECIMAL_DIG__ 17\r
-#define __LDBL_HAS_QUIET_NAN__ 1\r
-#define __GNUC__ 4\r
-#define __FLT_HAS_DENORM__ 1\r
-#define __SIZEOF_LONG_DOUBLE__ 8\r
-#define __DBL_MAX__ 1.7976931348623157e+308\r
-#define __DBL_HAS_INFINITY__ 1\r
-#define __DEC32_MIN_EXP__ (-95)\r
-#define __LDBL_HAS_DENORM__ 1\r
-#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL\r
-#define __USING_SJLJ_EXCEPTIONS__ 1\r
-#define __DEC32_MIN__ 1E-95DF\r
-#define __DBL_MAX_EXP__ 1024\r
-#define __DEC128_EPSILON__ 1E-33DL\r
-#define __LONG_LONG_MAX__ 9223372036854775807LL\r
-#define __SIZEOF_SIZE_T__ 4\r
-#define __SIZEOF_WINT_T__ 4\r
-#define __GXX_ABI_VERSION 1002\r
-#define __FLT_MIN_EXP__ (-125)\r
-#define __DBL_MIN__ 2.2250738585072014e-308\r
-#define __DEC128_MIN__ 1E-6143DL\r
-#define __REGISTER_PREFIX__ \r
-#define __DBL_HAS_DENORM__ 1\r
-#define __NO_INLINE__ 1\r
-#define __FLT_MANT_DIG__ 24\r
-#define __VERSION__ "4.3.3"\r
-#define __DEC64_EPSILON__ 1E-15DD\r
-#define __DEC128_MIN_EXP__ (-6143)\r
-#define __SIZE_TYPE__ unsigned int\r
-#define __DEC32_DEN__ 0.000001E-95DF\r
-#define __ELF__ 1\r
-#define __FLT_RADIX__ 2\r
-#define __LDBL_EPSILON__ 2.2204460492503131e-16L\r
-#define __SIZEOF_PTRDIFF_T__ 4\r
-#define __FLT_HAS_QUIET_NAN__ 1\r
-#define __FLT_MAX_10_EXP__ 38\r
-#define __LONG_MAX__ 2147483647L\r
-#define __FLT_HAS_INFINITY__ 1\r
-#define __DEC64_MAX__ 9.999999999999999E384DD\r
-#define __DEC64_MANT_DIG__ 16\r
-#define __DEC32_MAX_EXP__ 96\r
-#define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL\r
-#define __LDBL_MANT_DIG__ 53\r
-#define __DBL_HAS_QUIET_NAN__ 1\r
-#define __WCHAR_TYPE__ int\r
-#define __SIZEOF_FLOAT__ 4\r
-#define __DEC64_MIN_EXP__ (-383)\r
-#define __FLT_DIG__ 6\r
-#define __INT_MAX__ 2147483647\r
-#define __FLT_MAX_EXP__ 128\r
-#define __DBL_MANT_DIG__ 53\r
-#define __DEC64_MIN__ 1E-383DD\r
-#define __WINT_TYPE__ unsigned int\r
-#define __SIZEOF_SHORT__ 2\r
-#define __LDBL_MIN_EXP__ (-1021)\r
-#define __LDBL_MAX_10_EXP__ 308\r
-#define __DBL_EPSILON__ 2.2204460492503131e-16\r
-#define __SIZEOF_WCHAR_T__ 4\r
-#define __DEC_EVAL_METHOD__ 2\r
-#define __INTMAX_MAX__ 9223372036854775807LL\r
-#define __FLT_DENORM_MIN__ 1.40129846e-45F\r
-#define __FLT_MAX__ 3.40282347e+38F\r
-#define __SIZEOF_DOUBLE__ 8\r
-#define __FLT_MIN_10_EXP__ (-37)\r
-#define __INTMAX_TYPE__ long long int\r
-#define __DEC128_MAX_EXP__ 6144\r
-#define __GNUC_MINOR__ 3\r
-#define __DEC32_MANT_DIG__ 7\r
-#define __DBL_MAX_10_EXP__ 308\r
-#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L\r
-#define __PTRDIFF_TYPE__ int\r
-#define __DEC128_MANT_DIG__ 34\r
-#define __LDBL_MIN_10_EXP__ (-307)\r
-#define __SIZEOF_LONG_LONG__ 8\r
-#define __LDBL_DIG__ 15\r
-#define __GNUC_GNU_INLINE__ 1\r
diff --git a/hake/beehive-dM.txt b/hake/beehive-dM.txt
deleted file mode 100644 (file)
index e1572bd..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#define __DBL_MIN_EXP__ (-1021)\r
-#define __FLT_MIN__ 1.17549435e-38F\r
-#define __DEC64_DEN__ 0.000000000000001E-383DD\r
-#define __CHAR_BIT__ 8\r
-#define __WCHAR_MAX__ 2147483647\r
-#define __DBL_DENORM_MIN__ 4.9406564584124654e-324\r
-#define __FLT_EVAL_METHOD__ 0\r
-#define __DBL_MIN_10_EXP__ (-307)\r
-#define __FINITE_MATH_ONLY__ 0\r
-#define __GNUC_PATCHLEVEL__ 3\r
-#define __DEC64_MAX_EXP__ 384\r
-#define __SHRT_MAX__ 32767\r
-#define __LDBL_MAX__ 1.7976931348623157e+308L\r
-#define __UINTMAX_TYPE__ long long unsigned int\r
-#define __DEC32_EPSILON__ 1E-6DF\r
-#define __CHAR_UNSIGNED__ 1\r
-#define __LDBL_MAX_EXP__ 1024\r
-#define __SCHAR_MAX__ 127\r
-#define __DBL_DIG__ 15\r
-#define __SIZEOF_INT__ 4\r
-#define __SIZEOF_POINTER__ 4\r
-#define __USER_LABEL_PREFIX__ _\r
-#define __STDC_HOSTED__ 1\r
-#define __LDBL_HAS_INFINITY__ 1\r
-#define __BEEHIVE__ 1\r
-#define __FLT_EPSILON__ 1.19209290e-7F\r
-#define __LDBL_MIN__ 2.2250738585072014e-308L\r
-#define __DEC32_MAX__ 9.999999E96DF\r
-#define __SIZEOF_LONG__ 4\r
-#define __DECIMAL_DIG__ 17\r
-#define __LDBL_HAS_QUIET_NAN__ 1\r
-#define __GNUC__ 4\r
-#define __FLT_HAS_DENORM__ 1\r
-#define __SIZEOF_LONG_DOUBLE__ 8\r
-#define __DBL_MAX__ 1.7976931348623157e+308\r
-#define __DBL_HAS_INFINITY__ 1\r
-#define __DEC32_MIN_EXP__ (-95)\r
-#define __LDBL_HAS_DENORM__ 1\r
-#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL\r
-#define __USING_SJLJ_EXCEPTIONS__ 1\r
-#define __DEC32_MIN__ 1E-95DF\r
-#define __DBL_MAX_EXP__ 1024\r
-#define __DEC128_EPSILON__ 1E-33DL\r
-#define __LONG_LONG_MAX__ 9223372036854775807LL\r
-#define __SIZEOF_SIZE_T__ 4\r
-#define __SIZEOF_WINT_T__ 4\r
-#define __GXX_ABI_VERSION 1002\r
-#define __FLT_MIN_EXP__ (-125)\r
-#define __DBL_MIN__ 2.2250738585072014e-308\r
-#define __DEC128_MIN__ 1E-6143DL\r
-#define __REGISTER_PREFIX__ \r
-#define __DBL_HAS_DENORM__ 1\r
-#define __NO_INLINE__ 1\r
-#define __FLT_MANT_DIG__ 24\r
-#define __VERSION__ "4.3.3"\r
-#define __DEC64_EPSILON__ 1E-15DD\r
-#define __DEC128_MIN_EXP__ (-6143)\r
-#define __SIZE_TYPE__ unsigned int\r
-#define __DEC32_DEN__ 0.000001E-95DF\r
-#define __ELF__ 1\r
-#define __FLT_RADIX__ 2\r
-#define __LDBL_EPSILON__ 2.2204460492503131e-16L\r
-#define __SIZEOF_PTRDIFF_T__ 4\r
-#define __FLT_HAS_QUIET_NAN__ 1\r
-#define __FLT_MAX_10_EXP__ 38\r
-#define __LONG_MAX__ 2147483647L\r
-#define __FLT_HAS_INFINITY__ 1\r
-#define __DEC64_MAX__ 9.999999999999999E384DD\r
-#define __DEC64_MANT_DIG__ 16\r
-#define __DEC32_MAX_EXP__ 96\r
-#define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL\r
-#define __LDBL_MANT_DIG__ 53\r
-#define __DBL_HAS_QUIET_NAN__ 1\r
-#define __WCHAR_TYPE__ int\r
-#define __SIZEOF_FLOAT__ 4\r
-#define __DEC64_MIN_EXP__ (-383)\r
-#define __FLT_DIG__ 6\r
-#define __INT_MAX__ 2147483647\r
-#define __FLT_MAX_EXP__ 128\r
-#define __DBL_MANT_DIG__ 53\r
-#define __DEC64_MIN__ 1E-383DD\r
-#define __WINT_TYPE__ unsigned int\r
-#define __SIZEOF_SHORT__ 2\r
-#define __LDBL_MIN_EXP__ (-1021)\r
-#define __LDBL_MAX_10_EXP__ 308\r
-#define __DBL_EPSILON__ 2.2204460492503131e-16\r
-#define __SIZEOF_WCHAR_T__ 4\r
-#define __DEC_EVAL_METHOD__ 2\r
-#define __INTMAX_MAX__ 9223372036854775807LL\r
-#define __FLT_DENORM_MIN__ 1.40129846e-45F\r
-#define __FLT_MAX__ 3.40282347e+38F\r
-#define __SIZEOF_DOUBLE__ 8\r
-#define __FLT_MIN_10_EXP__ (-37)\r
-#define __INTMAX_TYPE__ long long int\r
-#define __DEC128_MAX_EXP__ 6144\r
-#define __GNUC_MINOR__ 3\r
-#define __DEC32_MANT_DIG__ 7\r
-#define __DBL_MAX_10_EXP__ 308\r
-#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L\r
-#define __STDC__ 1\r
-#define __PTRDIFF_TYPE__ int\r
-#define __DEC128_MANT_DIG__ 34\r
-#define __LDBL_MIN_10_EXP__ (-307)\r
-#define __SIZEOF_LONG_LONG__ 8\r
-#define __LDBL_DIG__ 15\r
-#define __GNUC_GNU_INLINE__ 1\r
diff --git a/hake/menu.lst.beehive b/hake/menu.lst.beehive
deleted file mode 100644 (file)
index e14fcc5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# spawnd is used to control which cpus are booted
-#
-# "spawnd boot" will use the skb and pci to figure out and
-#  boot all cores in the machine
-#
-# "spawnd boot bootbees=3-5" will not use the skb and
-# boot the list of cores passed as argument.
-# The hardware id of the cores to boot should be specified.
-# This list may not include the bsp core id.
-
-# NB: Beehive currently executes programs in-place without
-# relocation, requiring a separate copy of each binary for
-# each core on which it will run. This is achieved by the
-# |2 |3 etc. annotations on the module name, which are
-# ignored by Bsplice when deciding which file to open.
-
-timeout 0
-
-title  Barrelfish
-root   (nd)
-hypervisor     /beehive/sbin/hyper
-kernel /beehive/sbin/cpu loglevel=3
-module  /beehive/sbin/cpu|3
-module /beehive/sbin/init
-
-# Domains spawned by init
-module /beehive/sbin/mem_serv
-module /beehive/sbin/monitor
-module /beehive/sbin/monitor|3
-
-# Special boot time domains spawned by monitor
-module /beehive/sbin/chips boot
-module /beehive/sbin/ramfsd boot
-#module  /beehive/sbin/skb boot
-#module  /beehive/sbin/pci boot
-module  /beehive/sbin/spawnd boot bootbees=3
-module  /beehive/sbin/spawnd|3 nospawn
-module  /beehive/sbin/startd boot
-
-# General user domains
-#module        /beehive/sbin/serial
-#module        /beehive/sbin/fish
index f3964d5..1ab9475 100644 (file)
@@ -211,16 +211,6 @@ MODULES_xscale=\
 MODULES_arm11mp=\
        sbin/cpu.bin
 
-# Beehive-specific modules to build by default
-MODULES_beehive=\
-       sbin/hyper \
-       sbin/bmp_bench \
-       sbin/bulkbench \
-       sbin/thc_v_flounder_empty \
-       sbin/thcidctest \
-       sbin/thcminitest \
-       sbin/thctest \
-
 # construct list of all modules to be built (arch-specific and common for each arch)
 MODULES=$(foreach a,$(HAKE_ARCHS),$(foreach m,$(MODULES_$(a)),$(a)/$(m)) \
                                   $(foreach m,$(MODULES_COMMON),$(a)/$(m))) \
@@ -285,20 +275,6 @@ debugsim: $(MODULES) arm/romfs.cpio arm/tools/debug.arm.gdb
 else ifeq ($(ARCH),arm11mp)
        QEMU_CMD=qemu-system-arm -cpu mpcore -M realview -kernel arm11mp/sbin/cpu.bin
        GDB=arm-none-linux-gnueabi-gdb
-else ifeq ($(ARCH),beehive)
-
-simulate: ./beehive/sbin/spliced.img
-       Bsimimg -slave=$(SRCDIR)/kernel/arch/beehive/slavecode.mem -noaddrcheck -ncores=3 -ibase=1000 -datarota=2 ./beehive/sbin/spliced.img
-.PHONY : simulate
-
-trace: ./beehive/sbin/spliced.img
-       Bsimimg -slave=$(SRCDIR)/kernel/arch/beehive/slavecode.mem -noaddrcheck -ncores=3 -ibase=1000 -datarota=2 -instructions=instructions.txt -events=events.txt -cache=cache.txt ./beehive/sbin/spliced.img | tee sim.out
-
-.PHONY : trace
-
-./beehive/sbin/spliced.img: ./menu.lst $(MODULES)
-       Bsplice -o ./beehive/sbin/spliced.img -s ./beehive/sbin/beehive.splice -i menu.lst
-
 endif
 
 
@@ -424,7 +400,6 @@ DOCS= \
        ./docs/TN-004-VirtualMemory.pdf \
        ./docs/TN-005-SCC.pdf \
        ./docs/TN-006-Routing.pdf \
-       ./docs/TN-007-Beehive.pdf \
        ./docs/TN-008-Tracing.pdf \
        ./docs/TN-009-Notifications.pdf \
        ./docs/TN-010-Spec.pdf \
diff --git a/if/arch/beehive.if b/if/arch/beehive.if
deleted file mode 100644 (file)
index 280e09e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-alias errval uint32;
-alias cycles uint32;
index 5143009..42660c2 100644 (file)
@@ -90,16 +90,6 @@ interface intermon "The Interface between monitors" {
                                errval err,
                                caprep notify);
 
-        message bind_bmp_request(iref iref,
-                                 mon_id_t mon_id,
-                                 uint32 chanid,
-                                 uint32 ep_len);
-        message bind_bmp_reply(con_id_t con_id,
-                               mon_id_t mon_id,
-                               errval err,
-                               uint32 chanid,
-                               uint32 ep_len);
-
         message cap_send_request(con_id_t con_id,
                                  capid_t capid,
                                  caprep cap,
index 1cd4a5c..9a1d67e 100644 (file)
@@ -98,30 +98,6 @@ interface monitor "The monitor to client Interface" {
                         errval err,
                        cap notify);
 
-          message bind_bmp_client_request(
-                        iref iref,
-                        uintptr conn_id,
-                        cap lmp_ep);
-
-          message bind_bmp_service_request(
-                        uintptr service_id,
-                        uintptr mon_id,
-                        cap bee_ep,
-                        size remote_ep_len);
-
-          call bind_bmp_reply_monitor(
-                        uintptr mon_id,
-                        uintptr conn_id,
-                        cap lmp_ep,
-                        errval err);
-
-          response bind_bmp_reply_client(
-                        uintptr mon_id,
-                        uintptr conn_id,
-                        cap bee_ep,
-                        size remote_ep_len,
-                        errval err);
-
           call ipi_alloc_notify_request(cap ep, uintptr state);
          response ipi_alloc_notify_reply(uintptr state, cap notify, errval err);
 
diff --git a/if/platform/beehive.if b/if/platform/beehive.if
deleted file mode 100644 (file)
index 459214c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-alias genpaddr uint64;
-alias genvaddr uint64;
-alias rsrcid   uint32;
index f69c105..310e8d3 100644 (file)
@@ -13,7 +13,6 @@
 [ includeFile (options arch) f
       | f <- [ 
    "assert.h",
-   "bexec.h",
    "complex.h",
    "cpiobin.h",
    "ctype.h",
diff --git a/include/arch/beehive/_fpmath.h b/include/arch/beehive/_fpmath.h
deleted file mode 100644 (file)
index 8a374ed..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-\r
- * Copyright (c) 2002, 2003 David Schultz <das@FreeBSD.ORG>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- *\r
- * $FreeBSD$\r
- */\r
-\r
-union IEEEl2bits {\r
-       long double     e;\r
-       struct {\r
-               unsigned int    manl    :32;\r
-               unsigned int    manh    :20;\r
-               unsigned int    exp     :11;\r
-               unsigned int    sign    :1;\r
-       } bits;\r
-};\r
-\r
-#define        LDBL_NBIT       0\r
-#define        mask_nbit_l(u)  ((void)0)\r
-\r
-#define        LDBL_MANH_SIZE  32\r
-#define        LDBL_MANL_SIZE  32\r
-\r
-#define        LDBL_TO_ARRAY32(u, a) do {                      \\r
-       (a)[0] = (uint32_t)(u).bits.manl;               \\r
-       (a)[1] = (uint32_t)(u).bits.manh;               \\r
-} while(0)\r
-\r
diff --git a/include/arch/beehive/arch/inttypes.h b/include/arch/beehive/arch/inttypes.h
deleted file mode 100644 (file)
index 329ca46..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Australian Public Licence B (OZPLB)
- * 
- * Version 1-0
- * 
- * Copyright (c) 2004 National ICT Australia
- * 
- * All rights reserved. 
- * 
- * Developed by: Embedded, Real-time and Operating Systems Program (ERTOS)
- *               National ICT Australia
- *               http://www.ertos.nicta.com.au
- * 
- * Permission is granted by National ICT Australia, free of charge, to
- * any person obtaining a copy of this software and any associated
- * documentation files (the "Software") to deal with the Software without
- * restriction, including (without limitation) the rights to use, copy,
- * modify, adapt, merge, publish, distribute, communicate to the public,
- * sublicense, and/or sell, lend or rent out copies of the Software, and
- * to permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * 
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimers.
- * 
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimers in the documentation and/or other materials provided
- *       with the distribution.
- * 
- *     * Neither the name of National ICT Australia, nor the names of its
- *       contributors, may be used to endorse or promote products derived
- *       from this Software without specific prior written permission.
- * 
- * EXCEPT AS EXPRESSLY STATED IN THIS LICENCE AND TO THE FULL EXTENT
- * PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS-IS", AND
- * NATIONAL ICT AUSTRALIA AND ITS CONTRIBUTORS MAKE NO REPRESENTATIONS,
- * WARRANTIES OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
- * BUT NOT LIMITED TO ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS
- * REGARDING THE CONTENTS OR ACCURACY OF THE SOFTWARE, OR OF TITLE,
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT,
- * THE ABSENCE OF LATENT OR OTHER DEFECTS, OR THE PRESENCE OR ABSENCE OF
- * ERRORS, WHETHER OR NOT DISCOVERABLE.
- * 
- * TO THE FULL EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
- * NATIONAL ICT AUSTRALIA OR ITS CONTRIBUTORS BE LIABLE ON ANY LEGAL
- * THEORY (INCLUDING, WITHOUT LIMITATION, IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHERWISE) FOR ANY CLAIM, LOSS, DAMAGES OR OTHER
- * LIABILITY, INCLUDING (WITHOUT LIMITATION) LOSS OF PRODUCTION OR
- * OPERATION TIME, LOSS, DAMAGE OR CORRUPTION OF DATA OR RECORDS; OR LOSS
- * OF ANTICIPATED SAVINGS, OPPORTUNITY, REVENUE, PROFIT OR GOODWILL, OR
- * OTHER ECONOMIC LOSS; OR ANY SPECIAL, INCIDENTAL, INDIRECT,
- * CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES, ARISING OUT OF OR IN
- * CONNECTION WITH THIS LICENCE, THE SOFTWARE OR THE USE OF OR OTHER
- * DEALINGS WITH THE SOFTWARE, EVEN IF NATIONAL ICT AUSTRALIA OR ITS
- * CONTRIBUTORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH CLAIM, LOSS,
- * DAMAGES OR OTHER LIABILITY.
- * 
- * If applicable legislation implies representations, warranties, or
- * conditions, or imposes obligations or liability on National ICT
- * Australia or one of its contributors in respect of the Software that
- * cannot be wholly or partly excluded, restricted or modified, the
- * liability of National ICT Australia or the contributor is limited, to
- * the full extent permitted by the applicable legislation, at its
- * option, to:
- * a.  in the case of goods, any one or more of the following:
- * i.  the replacement of the goods or the supply of equivalent goods;
- * ii.  the repair of the goods;
- * iii. the payment of the cost of replacing the goods or of acquiring
- *  equivalent goods;
- * iv.  the payment of the cost of having the goods repaired; or
- * b.  in the case of services:
- * i.  the supplying of the services again; or
- * ii.  the payment of the cost of having the services supplied again.
- * 
- * The construction, validity and performance of this licence is governed
- * by the laws in force in New South Wales, Australia.
- */
-/*
-  Author: Ben Leslie
-*/
-#define __LENGTH_8_MOD "hh"
-#define __LENGTH_16_MOD "h"
-#define __LENGTH_32_MOD
-#define __LENGTH_64_MOD "ll"
-#define __LENGTH_MAX_MOD "ll"
-#define __LENGTH_PTR_MOD
diff --git a/include/arch/beehive/arch/setjmp.h b/include/arch/beehive/arch/setjmp.h
deleted file mode 100644 (file)
index c6f77dc..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*\r
- * Copyright (c) 2009, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-/* ISO/IEC 9899:1990 Sec 7.6 "jmp_buf is an array type" */\r
-typedef uintptr_t jmp_buf[32];\r
-\r
-\r
-    \r
diff --git a/include/arch/beehive/arch/stdint.h b/include/arch/beehive/arch/stdint.h
deleted file mode 100644 (file)
index 10ed767..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Australian Public Licence B (OZPLB)
- * 
- * Version 1-0
- * 
- * Copyright (c) 2004 National ICT Australia
- * 
- * All rights reserved. 
- * 
- * Developed by: Embedded, Real-time and Operating Systems Program (ERTOS)
- *               National ICT Australia
- *               http://www.ertos.nicta.com.au
- * 
- * Permission is granted by National ICT Australia, free of charge, to
- * any person obtaining a copy of this software and any associated
- * documentation files (the "Software") to deal with the Software without
- * restriction, including (without limitation) the rights to use, copy,
- * modify, adapt, merge, publish, distribute, communicate to the public,
- * sublicense, and/or sell, lend or rent out copies of the Software, and
- * to permit persons to whom the Software is furnished to do so, subject
- * to the following conditions:
- * 
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimers.
- * 
- *     * Redistributions in binary form must reproduce the above
- *       copyright notice, this list of conditions and the following
- *       disclaimers in the documentation and/or other materials provided
- *       with the distribution.
- * 
- *     * Neither the name of National ICT Australia, nor the names of its
- *       contributors, may be used to endorse or promote products derived
- *       from this Software without specific prior written permission.
- * 
- * EXCEPT AS EXPRESSLY STATED IN THIS LICENCE AND TO THE FULL EXTENT
- * PERMITTED BY APPLICABLE LAW, THE SOFTWARE IS PROVIDED "AS-IS", AND
- * NATIONAL ICT AUSTRALIA AND ITS CONTRIBUTORS MAKE NO REPRESENTATIONS,
- * WARRANTIES OR CONDITIONS OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
- * BUT NOT LIMITED TO ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS
- * REGARDING THE CONTENTS OR ACCURACY OF THE SOFTWARE, OR OF TITLE,
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT,
- * THE ABSENCE OF LATENT OR OTHER DEFECTS, OR THE PRESENCE OR ABSENCE OF
- * ERRORS, WHETHER OR NOT DISCOVERABLE.
- * 
- * TO THE FULL EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
- * NATIONAL ICT AUSTRALIA OR ITS CONTRIBUTORS BE LIABLE ON ANY LEGAL
- * THEORY (INCLUDING, WITHOUT LIMITATION, IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHERWISE) FOR ANY CLAIM, LOSS, DAMAGES OR OTHER
- * LIABILITY, INCLUDING (WITHOUT LIMITATION) LOSS OF PRODUCTION OR
- * OPERATION TIME, LOSS, DAMAGE OR CORRUPTION OF DATA OR RECORDS; OR LOSS
- * OF ANTICIPATED SAVINGS, OPPORTUNITY, REVENUE, PROFIT OR GOODWILL, OR
- * OTHER ECONOMIC LOSS; OR ANY SPECIAL, INCIDENTAL, INDIRECT,
- * CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES, ARISING OUT OF OR IN
- * CONNECTION WITH THIS LICENCE, THE SOFTWARE OR THE USE OF OR OTHER
- * DEALINGS WITH THE SOFTWARE, EVEN IF NATIONAL ICT AUSTRALIA OR ITS
- * CONTRIBUTORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH CLAIM, LOSS,
- * DAMAGES OR OTHER LIABILITY.
- * 
- * If applicable legislation implies representations, warranties, or
- * conditions, or imposes obligations or liability on National ICT
- * Australia or one of its contributors in respect of the Software that
- * cannot be wholly or partly excluded, restricted or modified, the
- * liability of National ICT Australia or the contributor is limited, to
- * the full extent permitted by the applicable legislation, at its
- * option, to:
- * a.  in the case of goods, any one or more of the following:
- * i.  the replacement of the goods or the supply of equivalent goods;
- * ii.  the repair of the goods;
- * iii. the payment of the cost of replacing the goods or of acquiring
- *  equivalent goods;
- * iv.  the payment of the cost of having the goods repaired; or
- * b.  in the case of services:
- * i.  the supplying of the services again; or
- * ii.  the payment of the cost of having the services supplied again.
- * 
- * The construction, validity and performance of this licence is governed
- * by the laws in force in New South Wales, Australia.
- */
-/*
-  Author: Ben Leslie
-*/
-
-typedef signed char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
-
-#define __PTR_SIZE 32
diff --git a/include/arch/beehive/barrelfish/bmp_chan.h b/include/arch/beehive/barrelfish/bmp_chan.h
deleted file mode 100644 (file)
index 1ce67c1..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * \file
- * \brief Bidirectional Beehive messaging channel
- */
-
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef BARRELFISH_BMP_CHAN_H
-#define BARRELFISH_BMP_CHAN_H
-
-#include <barrelfish/waitset.h>
-#include <barrelfish/lmp_endpoints.h>
-#include <barrelfish/syscall_arch.h>
-#include <barrelfish_kpi/bmp.h>
-#include <barrelfish/monitor_client.h>
-#include <trace/trace.h>
-
-struct bmp_chan;
-
-/// Default size of BMP endpoint buffer (in words), must be >= BMP_MSG_LENGTH
-// We make this reasonably large, because the flow control logic sends
-// an ack whenever there is less than BMP_MSG_LENGTH space remaining.
-#define DEFAULT_BMP_BUF_WORDS           (BMP_MSG_LENGTH * 2)
-
-struct bmp_bind_continuation {
-    /**
-     * \brief Handler which runs when a binding succeeds or fails
-     * \param st State pointer set in closure
-     * \param err Success/failure of binding
-     * \param c On success, contains pointer to channel
-     */
-    void (*handler)(void *st, errval_t err, struct bmp_chan *c);
-    void *st;
-};
-
-/// A bidirectional Beehive channel
-struct bmp_chan {
-    struct monitor_cap_handlers cap_handlers;   /* XXX: must be first */
-
-    struct bmp_chan *next, *prev;  ///< Next/prev in list of channels with send events
-    struct capref outepcap;        ///< Cap to remote Beehive endpoint
-    size_t outeplen;               ///< Size of remote endpoint buffer
-    struct lmp_endpoint *inep;     ///< Incoming LMP endpoint
-    struct capref inepcap;         ///< Cap to incoming LMP endpoint
-    struct waitset_chanstate send_waitset; ///< State belonging to waitset (for send)
-
-    /// connection state
-    enum {BMP_DISCONNECTED,     ///< Disconnected
-          BMP_BIND_WAIT,        ///< Waiting for bind reply
-          BMP_CONNECTED,        ///< Connection established
-    } connstate;
-
-    uintptr_t monitor_id;       ///< Local monitor's connection ID for this channel
-    struct monitor_binding *monitor_binding; ///< Monitor binding used for cap xfer
-
-    /* Arguments for an ongoing bind attempt */
-    iref_t iref;                ///< IREF to which we bound
-    struct bmp_bind_continuation bind_continuation; ///< Continuation for bind
-};
-
-/// Fixed-length version of #lmp_recv_buf
-struct bmp_recv_msg {
-    struct lmp_recv_buf buf;
-    uintptr_t words[BMP_MSG_LENGTH]; ///< Payload (fixed length)
-};
-
-/// Static initialiser for lmp_recv_msg
-#define BMP_RECV_MSG_INIT { .buf.buflen = BMP_MSG_LENGTH }
-
-struct event_queue_node;
-
-void bmp_chan_init(struct bmp_chan *c);
-errval_t bmp_chan_bind(struct bmp_chan *c, struct bmp_bind_continuation cont,
-                       struct event_queue_node *qnode,  iref_t iref,
-                       struct monitor_binding *monitor_binding,
-                       size_t ep_buflen);
-errval_t bmp_chan_accept(struct bmp_chan *c, uintptr_t mon_id,
-                         struct capref remote_ep, size_t remote_ep_len,
-                         size_t local_ep_len);
-void bmp_chan_send_bind_reply(struct monitor_binding *mb,
-                              struct bmp_chan *c, errval_t err,
-                              uintptr_t monitor_id);
-errval_t bmp_chan_register_send(struct bmp_chan *c, struct waitset *ws,
-                                struct event_closure closure);
-errval_t bmp_chan_deregister_send(struct bmp_chan *c);
-void bmp_chan_destroy(struct bmp_chan *c);
-void bmp_channels_retry_send_disabled(dispatcher_handle_t handle);
-void bmp_init(void);
-
-/**
- * \brief Register an event handler to be notified when messages can be received
- *
- * In the future, call the closure on the given waitset when it is likely that
- * a message can be received on the channel. A channel may only be registered
- * with a single receive event handler on a single waitset at any one time.
- *
- * \param c channel
- * \param ws Waitset
- * \param closure Event handler
- */
-static inline errval_t bmp_chan_register_recv(struct bmp_chan *c,
-                                              struct waitset *ws,
-                                              struct event_closure closure)
-{
-    return lmp_endpoint_register(c->inep, ws, closure);
-}
-
-/**
- * \brief Cancel an event registration made with bmp_chan_register_recv()
- *
- * \param c channel
- */
-static inline errval_t bmp_chan_deregister_recv(struct bmp_chan *c)
-{
-    return lmp_endpoint_deregister(c->inep);
-}
-
-/**
- * \brief Receive a message from a BMP channel, if possible
- *
- * Non-blocking. May fail if no message is available.
- *
- * \param c  channel
- * \param msg BMP message buffer, to be filled-in
- */
-static inline errval_t bmp_chan_recv(struct bmp_chan *c,
-                                     struct bmp_recv_msg *msg)
-{
-    assert(msg != NULL);
-    assert(msg->buf.buflen == BMP_MSG_LENGTH);
-    return lmp_endpoint_recv(c->inep, &msg->buf, NULL);
-}
-
-/**
- * \brief Send a message to a BMP channel, if possible
- *
- * Non-blocking. May fail if the channel cannot currently transmit.
- *
- * \param c  channel
- * \param ptr Message payload as an array of words
- * \param len Length of message payload, in words
- */
-static inline errval_t bmp_chan_send(struct bmp_chan *c,
-                                     uintptr_t *ptr, size_t len)
-{
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_SEND, (uintptr_t)c);
-
-    assert(c != NULL);
-    assert(ptr != NULL);
-    assert(len > 0 && len <= BMP_MSG_LENGTH);
-
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, len);
-    idc_msg_encode_word(&msg, (uintptr_t)ptr);
-
-    errval_t err;
-    err = cap_invoke(c->outepcap, &msg).error;
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_SEND, ((uintptr_t)c)|1);
-    return err;
-}
-
-#endif // BARRELFISH_BMP_CHAN_H
diff --git a/include/arch/beehive/barrelfish/bulk_transfer_arch.h b/include/arch/beehive/barrelfish/bulk_transfer_arch.h
deleted file mode 100644 (file)
index 01d58ab..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * \file
- * \brief Unidirectional bulk data transfer via shared memory
- */
-
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BULK_TRANSFER_H
-#define ARCH_BULK_TRANSFER_H
-
-// Provided by assembler
-//extern void bee_dcache_flush_rgn(void * a,size_t n);
-extern void bee_dcache_empty_rgn(void * a,size_t n);
-
-static inline void bulk_arch_prepare_send(void *mem, size_t size)
-{
-    bee_dcache_flush_rgn(mem, size);
-}
-
-static inline void bulk_arch_prepare_recv(void *mem, size_t size)
-{
-    bee_dcache_empty_rgn(mem, size);
-}
-
-#endif
diff --git a/include/arch/beehive/barrelfish/core_state_arch.h b/include/arch/beehive/barrelfish/core_state_arch.h
deleted file mode 100644 (file)
index 1069994..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * \file
- * \brief
- */
-
-/*
- * Copyright (c) 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_CORESTATE_H
-#define ARCH_BEEHIVE_BARRELFISH_CORESTATE_H
-
-#include <barrelfish/core_state.h>
-
-struct vspace_state {
-    struct vspace vspace;
-    struct pmap pmap;
-};
-
-struct core_state_arch {
-    struct core_state_generic c;
-    struct vspace_state vspace_state;
-};
-
-#endif
diff --git a/include/arch/beehive/barrelfish/cpu_arch.h b/include/arch/beehive/barrelfish/cpu_arch.h
deleted file mode 100644 (file)
index 827718c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \file
- * \brief Architecture specific CPU bits.
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef BEEHIVE_BARRELFISH_CPU_H
-#define BEEHIVE_BARRELFISH_CPU_H
-
-#define CURRENT_CPU_TYPE CPU_BEEHIVE
-
-#endif
diff --git a/include/arch/beehive/barrelfish/curdispatcher_arch.h b/include/arch/beehive/barrelfish/curdispatcher_arch.h
deleted file mode 100644 (file)
index 8120079..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * \file
- * \brief Dispatcher architecture-specific code
- */
-
-/*
- * Copyright (c) 2009, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_CURDISPATCHER_H
-#define ARCH_BEEHIVE_BARRELFISH_CURDISPATCHER_H
-
-/**
- * \brief Returns pointer to current dispatcher, using thread register
- */
-static inline dispatcher_handle_t curdispatcher(void)
-{
-    dispatcher_handle_t ret;
-
-    // We keep the dispatcher pointer in the platform usage register.
-    // This register is not used by the compiler.
-    __asm("ld %0, p1" : "=r" (ret) : );
-
-    return ret;
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_CURDISPATCHER_H
diff --git a/include/arch/beehive/barrelfish/dispatcher_arch.h b/include/arch/beehive/barrelfish/dispatcher_arch.h
deleted file mode 100644 (file)
index 4222483..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * \file
- * \brief Architecture specific dispatcher structure private to the user
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_DISPATCHER_H
-#define ARCH_BEEHIVE_BARRELFISH_DISPATCHER_H
-
-#include <target/beehive/barrelfish/dispatcher_target.h>
-
-static inline struct dispatcher_generic*
-get_dispatcher_generic(dispatcher_handle_t handle)
-{
-    struct dispatcher_beehive *disp = (struct dispatcher_beehive*)handle;
-    return &disp->generic;
-}
-
-static inline size_t get_dispatcher_size(void)
-{
-    return sizeof(struct dispatcher_beehive);
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_DISPATCHER_H
diff --git a/include/arch/beehive/barrelfish/invocations_arch.h b/include/arch/beehive/barrelfish/invocations_arch.h
deleted file mode 100644 (file)
index b0b6d80..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-/**
- * \file
- * \brief Low-level capability invocations
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <barrelfish_kpi/legacy_idc_buffer.h> // for idc_send_msg
-#include <barrelfish/syscall_arch.h> // for sys_invoke and cap_invoke
-
-
-/**
- * \brief Retype a capability.
- *
- * Retypes CPtr 'cap' into 2^'objbits' caps of type 'newtype' and places them
- * into slots starting at slot 'slot' in the CNode, addressed by 'to', with
- * 'bits' address bits of 'to' valid.
- *
- * See also cap_retype(), which wraps this.
- *
- * \param root          Capability of the CNode to invoke
- * \param cap           Address of cap to retype.
- * \param newtype       Kernel object type to retype to.
- * \param objbits       Size of created objects, for variable-sized types
- * \param to            Address of CNode cap to place retyped caps into.
- * \param slot          Slot in CNode cap to start placement.
- * \param bits          Number of valid address bits in 'to'.
- *
- * \return Error code
- */
-static inline errval_t invoke_cnode_retype(struct capref root, caddr_t cap,
-                                           enum objtype newtype, int objbits,
-                                           caddr_t to, caddr_t slot, int bits)
-{
-    assert(cap != CPTR_NULL);
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, CNodeCmd_Retype);
-    idc_msg_encode_word(&msg, cap);
-    idc_msg_encode_word(&msg, newtype);
-    idc_msg_encode_word(&msg, objbits);
-    idc_msg_encode_word(&msg, to);
-    idc_msg_encode_word(&msg, slot);
-    idc_msg_encode_word(&msg, bits);
-
-    return cap_invoke(root, &msg).error;
-}
-
-/**
- * \brief "Mint" a capability.
- *
- * Copies CPtr 'from' into slot 'slot' in the CNode, addressed by 'to', within
- * the address space, rooted at 'root' and with 'tobits' and 'frombits' address
- * bits of 'to' and 'from' valid, respectively.
- *
- * See also cap_mint(), which wraps this.
- *
- * \param root          Capability of the CNode to invoke
- * \param to            CNode to place copy into.
- * \param slot          Slot in CNode cap to place copy into.
- * \param from          Address of cap to copy.
- * \param tobits        Number of valid address bits in 'to'.
- * \param frombits      Number of valid address bits in 'from'.
- * \param param1        1st cap-dependent parameter.
- * \param param2        2nd cap-dependent parameter.
- *
- * \return Error code
- */
-static inline errval_t invoke_cnode_mint(struct capref root, caddr_t to,
-                                         caddr_t slot, caddr_t from, int tobits,
-                                         int frombits, uint64_t param1,
-                                         uint64_t param2)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, CNodeCmd_Mint);
-    idc_msg_encode_word(&msg, to);
-    idc_msg_encode_word(&msg, slot);
-    idc_msg_encode_word(&msg, from);
-    idc_msg_encode_word(&msg, tobits);
-    idc_msg_encode_word(&msg, frombits);
-    idc_msg_encode_word(&msg, param1);
-    idc_msg_encode_word(&msg, param2);
-
-    return cap_invoke(root, &msg).error;
-}
-
-// Required to compile
-static inline errval_t invoke_vnode_unmap(struct capref cap, size_t entry)
-{
-    assert(!"should not be called");
-    return LIB_ERR_NOT_IMPLEMENTED;
-}
-
-/**
- * \brief Copy a capability.
- *
- * Copies CPtr 'from' into slot 'slot' in the CNode, addressed by 'to', within
- * the address space, rooted at 'root' and with 'tobits' and 'frombits' address
- * bits of 'to' and 'from' valid, respectively.
- *
- * See also cap_copy(), which wraps this.
- *
- * \param root          Capability of the CNode to invoke
- * \param to            CNode to place copy into.
- * \param slot          Slot in CNode cap to place copy into.
- * \param from          Address of cap to copy.
- * \param tobits        Number of valid address bits in 'to'.
- * \param frombits      Number of valid address bits in 'from'.
- *
- * \return Error code
- */
-static inline errval_t invoke_cnode_copy(struct capref root, caddr_t to,
-                                         caddr_t slot, caddr_t from, int tobits,
-                                         int frombits)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, CNodeCmd_Copy);
-    idc_msg_encode_word(&msg, to);
-    idc_msg_encode_word(&msg, slot);
-    idc_msg_encode_word(&msg, from);
-    idc_msg_encode_word(&msg, tobits);
-    idc_msg_encode_word(&msg, frombits);
-
-    return cap_invoke(root, &msg).error;
-}
-
-/**
- * \brief Delete a capability.
- *
- * Delete the capability pointed to by 'cap', with 'bits' address bits
- * of it valid, from the address space rooted at 'root'.
- *
- * \param root  Capability of the CNode to invoke
- * \param cap   Address of cap to delete.
- * \param bits  Number of valid bits within 'cap'.
- *
- * \return Error code
- */
-static inline errval_t invoke_cnode_delete(struct capref root, caddr_t cap,
-                                           int bits)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, CNodeCmd_Delete);
-    idc_msg_encode_word(&msg, cap);
-    idc_msg_encode_word(&msg, bits);
-
-    return cap_invoke(root, &msg).error;
-}
-
-static inline errval_t invoke_cnode_revoke(struct capref root, caddr_t cap,
-                                           int bits)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, CNodeCmd_Revoke);
-    idc_msg_encode_word(&msg, cap);
-    idc_msg_encode_word(&msg, bits);
-
-    return cap_invoke(root, &msg).error;
-}
-
-/**
- * \brief Return the physical address and size of a frame capability
- *
- * \param frame    CSpace address of frame capability
- * \param ret      frame_identity struct filled in with relevant data
- *
- * \return Error code
- */
-static inline errval_t invoke_frame_identify(struct capref frame,
-                                             struct frame_identity *ret)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, FrameCmd_Identify);
-    struct sysret sysret = cap_invoke(frame, &msg);
-    assert(ret != NULL);
-    if (err_is_ok(sysret.error)) {
-        ret->base = sysret.value & (~BASE_PAGE_MASK);
-        ret->bits = sysret.value & BASE_PAGE_MASK;
-        return sysret.error;
-    }
-
-    ret->base = 0;
-    ret->bits = 0;
-    return sysret.error;
-}
-
-static inline errval_t invoke_iocap_in(struct capref iocap, enum io_cmd cmd,
-                                       uint16_t port, uint32_t *data)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, cmd);
-    idc_msg_encode_word(&msg, port);
-    struct sysret sysret = cap_invoke(iocap, &msg);
-    if (err_is_ok(sysret.error)) {
-        assert(data != NULL);
-        *data = sysret.value;
-    }
-    return sysret.error;
-}
-
-static inline errval_t invoke_iocap_out(struct capref iocap, enum io_cmd cmd,
-                                        uint16_t port, uint32_t data)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, cmd);
-    idc_msg_encode_word(&msg, port);
-    idc_msg_encode_word(&msg, data);
-    return cap_invoke(iocap, &msg).error;
-}
-
-/**
- * \brief Setup a dispatcher, possibly making it runnable
- *
- * \param dispatcher    Address of dispatcher capability
- * \param domdispatcher Address of existing dispatcher for domain ID
- * \param cspace_root   Root of CSpace for new dispatcher
- * \param cspace_root_bits  Number of valid bits in cspace_root
- * \param vspace_root   Root of VSpace for new dispatcher
- * \param dispatcher_frame Frame capability for dispatcher structure
- * \param run           Make runnable if true
- *
- * Any arguments of CPTR_NULL are ignored.
- *
- * \return Error code
- */
-static inline errval_t
-invoke_dispatcher(struct capref dispatcher, struct capref domdispatcher,
-                  struct capref cspace, struct capref vspace,
-                  struct capref dispframe, bool run)
-{
-    uint8_t root_vbits = get_cap_valid_bits(cspace);
-    caddr_t root_caddr = get_cap_addr(cspace) >> (CPTR_BITS - root_vbits);
-    caddr_t vtree_caddr = get_cap_addr(vspace);
-    caddr_t disp_caddr = get_cap_addr(dispframe);
-    caddr_t dd_caddr = get_cap_addr(domdispatcher);
-
-    struct idc_send_msg msg;
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, DispatcherCmd_Setup);
-    idc_msg_encode_word(&msg, root_caddr);
-    idc_msg_encode_word(&msg, root_vbits);
-    idc_msg_encode_word(&msg, vtree_caddr);
-    idc_msg_encode_word(&msg, disp_caddr);
-    idc_msg_encode_word(&msg, run);
-    idc_msg_encode_word(&msg, dd_caddr);
-    return cap_invoke(dispatcher, &msg).error;
-}
-
-/**
- * \brief Setup a VM guest DCB
- *
- * \param dcb       Dispatcher capability
- */
-static inline errval_t invoke_dispatcher_setup_guest(struct capref dispatcher,
-                                                     caddr_t ep_cap,
-                                                     caddr_t vnode,
-                                                     caddr_t vmkit_guest,
-                                                     caddr_t guest_control_cap)
-{
-    struct idc_send_msg msg;
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, DispatcherCmd_SetupGuest);
-    idc_msg_encode_word(&msg, ep_cap);
-    idc_msg_encode_word(&msg, vnode);
-    idc_msg_encode_word(&msg, vmkit_guest);
-    idc_msg_encode_word(&msg, guest_control_cap);
-    return cap_invoke(dispatcher, &msg).error;
-}
-
-static inline errval_t invoke_irqtable_set(struct capref irqcap, int irq,
-                                           struct capref ep)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, IRQTableCmd_Set);
-    idc_msg_encode_word(&msg, irq);
-    idc_msg_encode_word(&msg, get_cap_addr(ep));
-    return cap_invoke(irqcap, &msg).error;
-}
-
-static inline errval_t invoke_irqtable_delete(struct capref irqcap, int irq)
-{
-    struct idc_send_msg msg;
-
-    idc_msg_init(&msg);
-    idc_msg_encode_word(&msg, IRQTableCmd_Delete);
-    idc_msg_encode_word(&msg, irq);
-    return cap_invoke(irqcap, &msg).error;
-}
-
-// XXX TODO: Clean this with proper symbols
-static inline errval_t invoke_kernel_get_core_id(struct capref kern_cap,
-                                                 coreid_t *core_id)
-{
-    assert(core_id != 0);
-    volatile unsigned int *ptr = (void*)0x02;
-    unsigned int val = *ptr;
-    *core_id = ((val >> 10) & 0xf);
-    return SYS_ERR_OK;
-}
-
-static inline errval_t
-invoke_dispatcher_properties(struct capref dispatcher,
-                             enum task_type type, unsigned long deadline,
-                             unsigned long wcet, unsigned long period,
-                             unsigned long release, unsigned short weight)
-{
-    return LIB_ERR_NOT_IMPLEMENTED;
-}
diff --git a/include/arch/beehive/barrelfish/lmp_chan_arch.h b/include/arch/beehive/barrelfish/lmp_chan_arch.h
deleted file mode 100644 (file)
index da7303e..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * \file
- * \brief
- */
-
-/*
- * Copyright (c) 2007, 2008, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_LMP_CHAN_H
-#define ARCH_BEEHIVE_BARRELFISH_LMP_CHAN_H
-
-#include <barrelfish/syscall_arch.h> // for cap_invoke
-#include <barrelfish/caddr.h>
-#include <barrelfish_kpi/lmp.h>
-
-// Sanity check
-#if LMP_MSG_LENGTH != 9
-#error "LMP_MSG_LENGTH != 9"
-#endif
-
-// all this code relies massively on the compilers post-inlining optimiser
-
-/**
- * \brief Send a message on the given LMP channel, if possible
- *
- * Non-blocking, may fail if there is no space in the receiver's endpoint.
- *
- * \param ep Remote endpoint cap
- * \param flags LMP send flags
- * \param send_cap (Optional) capability to send with the message
- * \param length_words Length of the message in words; payload beyond this
- *                      size will not be delivered
- * \param arg1..N Message payload
- */
-static inline errval_t lmp_ep_send(struct capref ep, lmp_send_flags_t flags,
-                                  struct capref send_cap, uint8_t length_words,
-                                  uint32_t a, uint32_t b, uint32_t c, uint32_t d,
-                                  uint32_t e, uint32_t f, uint32_t g, uint32_t h,
-                                  uint32_t i)
-{
-    struct idc_send_msg msg;
-    
-    idc_msg_init(&msg);
-    if (length_words > 0) idc_msg_encode_word(&msg, a);
-    if (length_words > 1) idc_msg_encode_word(&msg, b);
-    if (length_words > 2) idc_msg_encode_word(&msg, c);
-    if (length_words > 3) idc_msg_encode_word(&msg, d);
-    if (length_words > 4) idc_msg_encode_word(&msg, e);
-    if (length_words > 5) idc_msg_encode_word(&msg, f);
-    if (length_words > 6) idc_msg_encode_word(&msg, g);
-    if (length_words > 7) idc_msg_encode_word(&msg, h);
-    if (length_words > 8) idc_msg_encode_word(&msg, i);
-
-    msg.u.x.header.x.flags.sync = ((flags & LMP_FLAG_SYNC) != 0) ? 1 : 0;
-    msg.u.x.header.x.flags.yield = ((flags & LMP_FLAG_YIELD) != 0) ? 1 : 0;
-
-    if (!capref_is_null(send_cap)) {
-       uint8_t send_bits = get_cap_valid_bits(send_cap);
-       msg.u.x.header.x.send_bits = send_bits;
-       msg.u.x.header.x.send_cptr = get_cap_addr(send_cap) >> (CPTR_BITS - send_bits);
-    }
-
-    return cap_invoke(ep, &msg).error;
-}
-
-// all this code relies massively on the compilers post-inlining optimiser
-
-#define lmp_ep_send4(_ep, _flags, _send_cap, _a, _b, _c, _d) \
-    lmp_ep_send((_ep), (_flags), (_send_cap), 4, (_a), (_b), (_c), (_d), 5, 6, 7, 8, 9)
-#define lmp_ep_send3(_ep, _flags, _send_cap, _a, _b, _c) \
-    lmp_ep_send((_ep), (_flags), (_send_cap), 3, (_a), (_b), (_c), 4, 5, 6, 7, 8, 9)
-#define lmp_ep_send2(_ep, _flags, _send_cap, _a, _b) \
-    lmp_ep_send((_ep), (_flags), (_send_cap), 2, (_a), (_b), 3, 4, 5, 6, 7, 8, 9)
-#define lmp_ep_send1(_ep, _flags, _send_cap, _a) \
-    lmp_ep_send((_ep), (_flags), (_send_cap), 1, (_a), 2, 3, 4, 5, 6, 7, 8, 9)
-#define lmp_ep_send0(_ep, _flags, _send_cap) \
-    lmp_ep_send((_ep), (_flags), (_send_cap), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
-
-
-#define lmp_chan_send(_lc, _flags, _send_cap, _len, _a, _b, _c, _d, _e, _f, _g, _h, _i) \
-  lmp_ep_send((_lc)->remote_cap, (_flags), (_send_cap), (_len), \
-               (_a), (_b), (_c), (_d), (_e), (_f), (_g), (_h), (_i))
-
-// all this code relies massively on the compilers post-inlining optimiser
-
-#define lmp_chan_send9(_lc, _flags, _send_cap, _a, _b, _c, _d, _e, _f, _g, _h, _i) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 9, (_a), (_b), (_c), (_d), (_e), (_f), (_g), (_h), (_i))
-#define lmp_chan_send8(_lc, _flags, _send_cap, _a, _b, _c, _d, _e, _f, _g, _h) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 8, (_a), (_b), (_c), (_d), (_e), (_f), (_g), (_h), 9)
-#define lmp_chan_send7(_lc, _flags, _send_cap, _a, _b, _c, _d, _e, _f, _g) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 7, (_a), (_b), (_c), (_d), (_e), (_f), (_g), 8, 9)
-#define lmp_chan_send6(_lc, _flags, _send_cap, _a, _b, _c, _d, _e, _f) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 6, (_a), (_b), (_c), (_d), (_e), (_f), 7, 8, 9)
-#define lmp_chan_send5(_lc, _flags, _send_cap, _a, _b, _c, _d, _e) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 5, (_a), (_b), (_c), (_d), (_e), 6, 7, 8, 9)
-#define lmp_chan_send4(_lc, _flags, _send_cap, _a, _b, _c, _d) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 4, (_a), (_b), (_c), (_d), 5, 6, 7, 8, 9)
-#define lmp_chan_send3(_lc, _flags, _send_cap, _a, _b, _c) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 3, (_a), (_b), (_c), 4, 5, 6, 7, 8, 9)
-#define lmp_chan_send2(_lc, _flags, _send_cap, _a, _b) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 2, (_a), (_b), 3, 4, 5, 6, 7, 8, 9)
-#define lmp_chan_send1(_lc, _flags, _send_cap, _a) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 1, (_a), 2, 3, 4, 5, 6, 7, 8, 9)
-#define lmp_chan_send0(_lc, _flags, _send_cap) \
-    lmp_chan_send((_lc), (_flags), (_send_cap), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
-
-#endif // ARCH_BEEHIVE_BARRELFISH_LMP_CHAN_H
diff --git a/include/arch/beehive/barrelfish/pmap_arch.h b/include/arch/beehive/barrelfish/pmap_arch.h
deleted file mode 100644 (file)
index 6959811..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * \file
- * \brief pmap management wrappers
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_PMAP_H
-#define ARCH_BEEHIVE_BARRELFISH_PMAP_H
-
-#include <barrelfish/pmap.h>
-
-#define ARCH_DEFAULT_PMAP_SIZE sizeof(struct pmap)
-
-errval_t pmap_init(struct pmap *pmap, struct vspace *vspace,
-                   struct capref vnode, struct slot_allocator *opt_slot_alloc);
-errval_t pmap_current_init(bool);
-
-#endif // ARCH_BEEHIVE_BARRELFISH_PMAP_H
diff --git a/include/arch/beehive/barrelfish/syscall_arch.h b/include/arch/beehive/barrelfish/syscall_arch.h
deleted file mode 100644 (file)
index 1e85fa6..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * \file
- * \brief User-side system call implementation
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_SYSCALL_H
-#define ARCH_BEEHIVE_BARRELFISH_SYSCALL_H
-
-#include <barrelfish/caddr.h> // for get_cap_valid_bits
-#include <barrelfish_kpi/legacy_idc_buffer.h> // for struct idc_send_msg
-
-// Implemented in assembler
-
-#if 0 // these are already declared in include/barrelfish/syscalls.h
-extern errval_t sys_yield(caddr_t target);
-extern errval_t sys_nop(void);
-extern errval_t sys_print(const char *string, size_t length);
-#endif
-
-extern errval_t sys_invoke(uintptr_t *const pvalue,
-                          uint8_t invokebits,
-                          caddr_t invokecptr,
-                          struct idc_send_msg *const msg);
-
-
-extern errval_t sys_rundown(void);
-
-/*
- *  This must be here since it is relied on variously by
- *  incovations.h, monitor_invocations.h and lmp_chan_arch.h
- */
-
-/**
- * \brief Invoke (send a message to) a capability, returning an error and a value
- *
- * \param to Capability to invoke
- * \param msg Message to send
- *
- * This is needed for some system calls that return a structure of two values.
- *
- * \returns System return structure (#sysret)
- */
-static inline struct sysret
-cap_invoke(struct capref to, struct idc_send_msg *msg)
-{
-    // TODO: XXX: This should have a typedef not a uint8_t
-    uint8_t invokebits = get_cap_valid_bits(to);
-    caddr_t invokecptr = get_cap_addr(to) >> (CPTR_BITS - invokebits);
-
-    struct sysret retval;
-    retval.error = sys_invoke(&retval.value, invokebits, invokecptr, msg);
-    return retval;
-}
-
-
-#endif // ARCH_BEEHIVE_BARRELFISH_SYSCALL_H
diff --git a/include/arch/beehive/barrelfish_kpi/bmp.h b/include/arch/beehive/barrelfish_kpi/bmp.h
deleted file mode 100644 (file)
index d048721..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * \file
- * \brief BMP declarations
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef BMP_H
-#define BMP_H
-
-#define BMP_MSG_LENGTH 58 /* words */
-
-#endif // BMP_H
diff --git a/include/arch/beehive/barrelfish_kpi/cpu_arch.h b/include/arch/beehive/barrelfish_kpi/cpu_arch.h
deleted file mode 100644 (file)
index 3b98a94..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \file
- * \brief Arch specific CPU declarations
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_CPU_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_CPU_H
-
-/// This CPU supports lazy FPU context switching?
-#undef FPU_LAZY_CONTEXT_SWITCH
-
-#endif
diff --git a/include/arch/beehive/barrelfish_kpi/dispatcher_shared_arch.h b/include/arch/beehive/barrelfish_kpi/dispatcher_shared_arch.h
deleted file mode 100644 (file)
index 93be104..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * \file
- * \brief Architecture specific dispatcher struct shared between kernel and user
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_ARCH_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_ARCH_H
-
-#include <target/beehive/barrelfish_kpi/dispatcher_shared_target.h>
-
-/**
- * \brief Returns whether dispatcher is currently disabled, given IP.
- *
- * \param disp  Pointer to dispatcher
- * \param ip    User-level instruction pointer.
- *
- * \return true if dispatcher disabled, false otherwise.
- */
-static inline bool dispatcher_is_disabled_ip(dispatcher_handle_t handle,
-                                             uintptr_t rip)
-{
-    struct dispatcher_shared_generic *disp =
-        get_dispatcher_shared_generic(handle);
-    return disp->disabled;
-}
-
-static inline arch_registers_state_t*
-dispatcher_get_enabled_save_area(dispatcher_handle_t handle)
-{
-    return dispatcher_beehive_get_enabled_save_area(handle);
-}
-
-static inline arch_registers_state_t*
-dispatcher_get_disabled_save_area(dispatcher_handle_t handle)
-{
-    return dispatcher_beehive_get_disabled_save_area(handle);
-}
-
-static inline arch_registers_state_t*
-dispatcher_get_trap_save_area(dispatcher_handle_t handle)
-{
-    return dispatcher_beehive_get_trap_save_area(handle);
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_ARCH_H
diff --git a/include/arch/beehive/barrelfish_kpi/generic_arch.h b/include/arch/beehive/barrelfish_kpi/generic_arch.h
deleted file mode 100644 (file)
index 3ef1e24..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \file
- * \brief Generic include for a bunch of arch specific files
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_GENERIC_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_GENERIC_H
-
-#include <barrelfish_kpi/spinlocks_arch.h>
-#include <barrelfish_kpi/unknown_arch.h>
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_GENERIC_H
diff --git a/include/arch/beehive/barrelfish_kpi/lmp_arch.h b/include/arch/beehive/barrelfish_kpi/lmp_arch.h
deleted file mode 100644 (file)
index 310d411..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * \file
- * \brief Arch specific LMP declarations
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_LMP_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_LMP_H
-
-#include <barrelfish_kpi/legacy_idc_buffer.h>
-
-/**
- * \brief Maximum total length of LMP and LRPC messages (payload)
- *
- * Determined by the size of idc_send_msg.  LMP is done by marshalling
- * into an struct idc_send_msg in lmp_chan_arch.h and then invoking
- * the endpoint capability passing the idc_send_msg.  This passes
- * through the syscal call to handle_invocation in the kernel and
- * thence lmp_deliver in the kernel.
- */
-
-// Warning: this is also known to tools/flounder/Args.hs
-
-#define LMP_MSG_LENGTH          IDC_MSG_LENGTH
-
-// TODO: XXX Size of LRPC
-#define LRPC_MSG_LENGTH         0
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_LMP_H
diff --git a/include/arch/beehive/barrelfish_kpi/paging_arch.h b/include/arch/beehive/barrelfish_kpi/paging_arch.h
deleted file mode 100644 (file)
index f64e9df..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * \file
- * \brief Arch specific paging definitions
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_PAGING_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_PAGING_H
-
-// Required for various APIs to compile even if it means nothing
-#define PTABLE_ACCESS_DEFAULT 0
-
-/* Default page size is 4K */
-#define BASE_PAGE_BITS          12
-#define BASE_PAGE_SIZE          (1u << BASE_PAGE_BITS)
-#define BASE_PAGE_MASK          (BASE_PAGE_SIZE - 1)
-#define BASE_PAGE_OFFSET(a)     ((a) & BASE_PAGE_MASK)
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_PAGING_H
diff --git a/include/arch/beehive/barrelfish_kpi/registers_arch.h b/include/arch/beehive/barrelfish_kpi/registers_arch.h
deleted file mode 100644 (file)
index 7660435..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * \file
- * \brief architecture-specific registers code
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_REGISTERS_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_REGISTERS_H
-
-// saved register 0 contains the count of words in RQ.  Currently
-// if that is non-zero we panic.
-
-union registers_beehive {
-    struct registers_beehive_named {
-       uint32_t count;
-       uint32_t return1, return2;
-       uint32_t arg1, arg2, arg3, arg4, arg5, arg6;
-       uint32_t save1, save2, save3, save4, save5, save6, save7, save8;
-       uint32_t save9, save10, save11, save12, save13, save14;
-       uint32_t frame;
-       uint32_t t1, t2, t3;
-       uint32_t p1;
-       uint32_t stack;
-       uint32_t vb;
-       uint32_t link, pc;
-       uint32_t rqvals[64];
-    } named;
-    uint32_t regs[sizeof(struct registers_beehive_named) / sizeof(uint32_t)];
-};
-
-STATIC_ASSERT_SIZEOF(union registers_beehive, 96 * 4);
-
-///< Opaque handle for the register state
-typedef union registers_beehive arch_registers_state_t;
-
-///< Opaque handle for the FPU register state
-typedef void *arch_registers_fpu_state_t;
-
-static inline void
-registers_set_entry(arch_registers_state_t *regs, lvaddr_t entry)
-{
-    regs->named.pc = (uint32_t)entry;
-}
-
-static inline void
-registers_set_param(arch_registers_state_t *regs, uint32_t param)
-{
-    regs->named.arg1 = param;
-}
-
-static inline void
-registers_get_param(arch_registers_state_t *regs, uint32_t *param)
-{
-    *param = regs->named.arg1;
-}
-
-static inline uint32_t
-registers_get_ip(arch_registers_state_t *regs)
-{
-    return regs->named.pc;
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_REGISTERS_H
diff --git a/include/arch/beehive/barrelfish_kpi/spinlocks_arch.h b/include/arch/beehive/barrelfish_kpi/spinlocks_arch.h
deleted file mode 100644 (file)
index a271134..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * \file
- * \brief
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_SPINLOCKS_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_SPINLOCKS_H
-
-// required for kernel printf -- really!
-// and it has to be here which is strange
-// spinlock_t must be an integer because lots of places initialise it with = 0
-typedef int spinlock_t;
-
-static inline void acquire_spinlock(spinlock_t *lock)
-{
-    assert(*lock == 0);
-    *lock = 1;
-}
-
-static inline void release_spinlock(spinlock_t *lock)
-{
-    assert(*lock == 1);
-    *lock = 0;
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_SPINLOCKS_H
diff --git a/include/arch/beehive/barrelfish_kpi/unknown_arch.h b/include/arch/beehive/barrelfish_kpi/unknown_arch.h
deleted file mode 100644 (file)
index ac2c716..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * \file
- * \brief Not sure where to put these definitions
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_KPI_UNKNOWN_H
-#define ARCH_BEEHIVE_BARRELFISH_KPI_UNKNOWN_H
-
-// required for lib/lwip/src/barrelfish/idc_barrelfish.c
-
-// We have a totally ordered memory system, but need to ensure that
-// compiler optimised does not reorder across it.
-#define mfence() __asm volatile("" : /*outs*/ : /*ins*/ : "memory")
-
-
-// Provided by assembler
-extern void bee_dcache_flush_rgn(void * a,size_t n);
-
-#define cache_flush_range(_b, _l) bee_dcache_flush_rgn((_b), (_l))
-
-#endif // ARCH_BEEHIVE_BARRELFISH_KPI_UNKNOWN_H
diff --git a/include/arch/beehive/beej7.h b/include/arch/beehive/beej7.h
deleted file mode 100644 (file)
index f82ce10..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/**\r
- * \file\r
- * \brief beehive j7 dop definitions\r
- */\r
-\r
-/*\r
- * Copyright (c) 2009, 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef ARCH_BEEHIVE_J7_H\r
-#define ARCH_BEEHIVE_J7_H\r
-\r
-#define BEE_J7_NOP 0\r
-#define BEE_J7_COREAREA 1\r
-#define BEE_J7_SAVEDPC 2\r
-#define BEE_J7_SAVEDLINK 3\r
-#define BEE_J7_TEST_RQ_EMPTY 4\r
-#define BEE_J7_TEST_RUNNING 5\r
-#define BEE_J7_BREAKPOINT 6\r
-\r
-#endif // ARCH_BEEHIVE_J7_H\r
diff --git a/include/arch/beehive/bench/bench_arch.h b/include/arch/beehive/bench/bench_arch.h
deleted file mode 100644 (file)
index 05e9205..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * \file
- * \brief Arch specific bench include.
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef ARCH_BEEHIVE_BARRELFISH_BENCH_H
-#define ARCH_BEEHIVE_BARRELFISH_BENCH_H
-
-#include <bench/bench.h>
-
-void bench_arch_init(void);
-
-/**
- * \brief Take a timestamp
- */
-static inline cycles_t bench_tsc(void)
-{
-    return *(volatile size_t *)(0x22);
-}
-
-#endif // ARCH_BEEHIVE_BARRELFISH_BENCH_H
diff --git a/include/arch/beehive/corearea.h b/include/arch/beehive/corearea.h
deleted file mode 100644 (file)
index e91cef2..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/**\r
- * \file\r
- * \brief Per-core debug stub save area\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef ARCH_BEEHIVE_COREAREA_H\r
-#define ARCH_BEEHIVE_COREAREA_H\r
-\r
-#include <barrelfish/static_assert.h>\r
-\r
-struct corearea {\r
-    uint32_t regs[32];\r
-    uint32_t rqarea[64];\r
-    uint32_t flags0;\r
-    uint32_t pad0[7];\r
-    /* This next cache line is invalidated and read by the slave and\r
-     * only ever written and flushed by the master */\r
-    uint32_t master_stops;\r
-    uint32_t master_ticks;\r
-    uint32_t pad1[6];\r
-    /* This next cache line is invalidated and read by the master and\r
-     * only ever written and flushed by the slave */\r
-    uint32_t slave_stops;\r
-    uint32_t slave_ticks;\r
-    uint32_t pad2[6];\r
-    /* This cache line is used for communicating between the debug\r
-     * stub and the kernel */\r
-    uint32_t kernel_begins;  // code address\r
-    uint32_t kernel_ends;    // code address\r
-    uint32_t kernel_ticker;  // code address\r
-    uint32_t kernel_pending; // != 0 implies software interrupt pending\r
-    uint32_t syspad[3];\r
-    uint32_t syscall;        // code address\r
-};\r
-\r
-STATIC_ASSERT_SIZEOF(struct corearea, 128 * 4);\r
-// Flags areas must be each in their own cache line\r
-STATIC_ASSERT((sa_offsetof(struct corearea, flags0) & 31) == 0, "alignment");\r
-STATIC_ASSERT((sa_offsetof(struct corearea, master_stops) & 31) == 0, "alignment");\r
-STATIC_ASSERT((sa_offsetof(struct corearea, slave_stops) & 31) == 0, "alignment");\r
-STATIC_ASSERT((sa_offsetof(struct corearea, kernel_begins) & 31) == 0, "alignment");\r
-\r
-#define COREAREA_FOR_CORE(_core) \\r
-       ((struct corearea *)(0x4000 + ((_core) << 9)))\r
-\r
-static inline struct corearea *my_corearea(void)\r
-{\r
-    struct corearea *result;\r
-    __asm("j7 1; ld %[result], link"\r
-         : [result]"=r" (result) :: "link", "cc");\r
-    return result;\r
-}\r
-\r
-#endif // ARCH_BEEHIVE_COREAREA_H\r
diff --git a/include/arch/beehive/dcache.h b/include/arch/beehive/dcache.h
deleted file mode 100644 (file)
index b37ddb1..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/**\r
- * \file\r
- * \brief Prototypes for Cache Management\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef ARCH_BEEHIVE_DCACHE_H\r
-#define ARCH_BEEHIVE_DCACHE_H\r
-\r
-/*\r
- * Atomically flush and then invalidate the entire cache\r
- */\r
-\r
-extern void bee_dcache_empty_all(void);\r
-\r
-/*\r
- * Flush (with writeback) the entire cache\r
- */\r
-\r
-static inline void bee_dcache_flush_all(void)\r
-{\r
-    __asm volatile ("aqw_long_ld vb,0x8001fc03 ROL 2"\r
-         ::: "link", "cc");\r
-}\r
-\r
-#endif // ARCH_BEEHIVE_DCACHE_H\r
diff --git a/include/arch/beehive/fenv.h b/include/arch/beehive/fenv.h
deleted file mode 100644 (file)
index 25819d1..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*-
- * Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD: src/lib/msun/mips/fenv.h,v 1.1 2008/04/26 12:20:29 imp Exp $
- */
-
-#ifndef        _FENV_H_
-#define        _FENV_H_
-
-#include <sys/_types.h>
-
-typedef        __uint32_t      fenv_t;
-typedef        __uint32_t      fexcept_t;
-
-/* Exception flags */
-#define        FE_INVALID      0x0001
-#define        FE_DIVBYZERO    0x0002
-#define        FE_OVERFLOW     0x0004
-#define        FE_UNDERFLOW    0x0008
-#define        FE_INEXACT      0x0010
-#define        FE_ALL_EXCEPT   (FE_DIVBYZERO | FE_INEXACT | \
-                        FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
-
-/* Rounding modes */
-#define        FE_TONEAREST    0x0000
-#define        FE_TOWARDZERO   0x0001
-#define        FE_UPWARD       0x0002
-#define        FE_DOWNWARD     0x0003
-#define        _ROUND_MASK     (FE_TONEAREST | FE_DOWNWARD | \
-                        FE_UPWARD | FE_TOWARDZERO)
-__BEGIN_DECLS
-
-/* Default floating-point environment */
-extern const fenv_t    __fe_dfl_env;
-#define        FE_DFL_ENV      (&__fe_dfl_env)
-
-/* We need to be able to map status flag positions to mask flag positions */
-#define _FPUSW_SHIFT   16
-#define        _ENABLE_MASK    (FE_ALL_EXCEPT << _FPUSW_SHIFT)
-
-#ifdef ARM_HARD_FLOAT
-#define        __rfs(__fpsr)   __asm __volatile("rfs %0" : "=r" (*(__fpsr)))
-#define        __wfs(__fpsr)   __asm __volatile("wfs %0" : : "r" (__fpsr))
-#else
-#define __rfs(__fpsr)
-#define __wfs(__fpsr)
-#endif
-
-static __inline int
-feclearexcept(int __excepts)
-{
-       fexcept_t __fpsr;
-
-       __rfs(&__fpsr);
-       __fpsr &= ~__excepts;
-       __wfs(__fpsr);
-       return (0);
-}
-
-static __inline int
-fegetexceptflag(fexcept_t *__flagp, int __excepts)
-{
-       fexcept_t __fpsr;
-
-       __rfs(&__fpsr);
-       *__flagp = __fpsr & __excepts;
-       return (0);
-}
-
-static __inline int
-fesetexceptflag(const fexcept_t *__flagp, int __excepts)
-{
-       fexcept_t __fpsr;
-
-       __rfs(&__fpsr);
-       __fpsr &= ~__excepts;
-       __fpsr |= *__flagp & __excepts;
-       __wfs(__fpsr);
-       return (0);
-}
-
-static __inline int
-feraiseexcept(int __excepts)
-{
-       fexcept_t __ex = __excepts;
-
-       fesetexceptflag(&__ex, __excepts);      /* XXX */
-       return (0);
-}
-
-static __inline int
-fetestexcept(int __excepts)
-{
-       fexcept_t __fpsr;
-
-       __rfs(&__fpsr);
-       return (__fpsr & __excepts);
-}
-
-static __inline int
-fegetround(void)
-{
-
-       /*
-        * Apparently, the rounding mode is specified as part of the
-        * instruction format on ARM, so the dynamic rounding mode is
-        * indeterminate.  Some FPUs may differ.
-        */
-       return (-1);
-}
-
-static __inline int
-fesetround(int __round)
-{
-
-       return (-1);
-}
-
-static __inline int
-fegetenv(fenv_t *__envp)
-{
-
-       __rfs(__envp);
-       return (0);
-}
-
-static __inline int
-feholdexcept(fenv_t *__envp)
-{
-       fenv_t __env;
-
-       __rfs(&__env);
-       *__envp = __env;
-       __env &= ~(FE_ALL_EXCEPT | _ENABLE_MASK);
-       __wfs(__env);
-       return (0);
-}
-
-static __inline int
-fesetenv(const fenv_t *__envp)
-{
-
-       __wfs(*__envp);
-       return (0);
-}
-
-static __inline int
-feupdateenv(const fenv_t *__envp)
-{
-       fexcept_t __fpsr;
-
-       __rfs(&__fpsr);
-       __wfs(*__envp);
-       feraiseexcept(__fpsr & FE_ALL_EXCEPT);
-       return (0);
-}
-
-#if __BSD_VISIBLE
-
-static __inline int
-feenableexcept(int __mask)
-{
-       fenv_t __old_fpsr, __new_fpsr;
-
-       __rfs(&__old_fpsr);
-       __new_fpsr = __old_fpsr | (__mask & FE_ALL_EXCEPT) << _FPUSW_SHIFT;
-       __wfs(__new_fpsr);
-       return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
-}
-
-static __inline int
-fedisableexcept(int __mask)
-{
-       fenv_t __old_fpsr, __new_fpsr;
-
-       __rfs(&__old_fpsr);
-       __new_fpsr = __old_fpsr & ~((__mask & FE_ALL_EXCEPT) << _FPUSW_SHIFT);
-       __wfs(__new_fpsr);
-       return ((__old_fpsr >> _FPUSW_SHIFT) & FE_ALL_EXCEPT);
-}
-
-static __inline int
-fegetexcept(void)
-{
-       fenv_t __fpsr;
-
-       __rfs(&__fpsr);
-       return ((__fpsr & _ENABLE_MASK) >> _FPUSW_SHIFT);
-}
-
-#endif /* __BSD_VISIBLE */
-
-__END_DECLS
-
-#endif /* !_FENV_H_ */
diff --git a/include/arch/beehive/float.h b/include/arch/beehive/float.h
deleted file mode 100644 (file)
index 3fb0af3..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*      $NetBSD: float.h,v 1.6 2005/12/11 12:16:47 christos Exp $       */\r
-/*      $NetBSD: float_ieee754.h,v 1.8 2005/12/11 12:25:20 christos Exp $       */\r
-\r
-/*\r
- * Copyright (c) 1992, 1993\r
- *      The Regents of the University of California.  All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- * 3. Neither the name of the University nor the names of its contributors\r
- *    may be used to endorse or promote products derived from this software\r
- *    without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- *\r
- *      @(#)float.h     8.1 (Berkeley) 6/10/93\r
- */\r
-\r
-#ifndef _ARM_FLOAT_H_\r
-#define _ARM_FLOAT_H_\r
-\r
-#include <sys/cdefs.h>\r
-\r
-#ifndef FLT_ROUNDS\r
-__BEGIN_DECLS\r
-extern int __flt_rounds(void);\r
-__END_DECLS\r
-#define FLT_ROUNDS      -1 /* __flt_rounds() */\r
-#endif\r
-\r
-#define FLT_EVAL_METHOD (-1)            /* XXX */\r
-\r
-#define LDBL_MANT_DIG   64\r
-#define LDBL_EPSILON    1.0842021724855044340E-19L\r
-#define LDBL_DIG        18\r
-#define LDBL_MIN_EXP    (-16381)\r
-#define LDBL_MIN        1.6810515715560467531E-4932L\r
-#define LDBL_MIN_10_EXP (-4931)\r
-#define LDBL_MAX_EXP    16384\r
-#define LDBL_MAX        1.1897314953572317650E+4932L\r
-#define LDBL_MAX_10_EXP 4932\r
-\r
-#define FLT_RADIX       2               /* b */\r
-\r
-#define FLT_MANT_DIG    24              /* p */\r
-#define FLT_EPSILON     1.19209290E-7F  /* b**(1-p) */\r
-#define FLT_DIG         6               /* floor((p-1)*log10(b))+(b == 10) */\r
-#define FLT_MIN_EXP     (-125)          /* emin */\r
-#define FLT_MIN         1.17549435E-38F /* b**(emin-1) */\r
-#define FLT_MIN_10_EXP  (-37)           /* ceil(log10(b**(emin-1))) */\r
-#define FLT_MAX_EXP     128             /* emax */\r
-#define FLT_MAX         3.40282347E+38F /* (1-b**(-p))*b**emax */\r
-#define FLT_MAX_10_EXP  38              /* floor(log10((1-b**(-p))*b**emax)) */\r
-\r
-#define DBL_MANT_DIG    53\r
-#define DBL_EPSILON     2.2204460492503131E-16\r
-#define DBL_DIG         15\r
-#define DBL_MIN_EXP     (-1021)\r
-#define DBL_MIN         2.2250738585072014E-308\r
-#define DBL_MIN_10_EXP  (-307)\r
-#define DBL_MAX_EXP     1024\r
-#define DBL_MAX         1.7976931348623157E+308\r
-#define DBL_MAX_10_EXP  308\r
-\r
-#define DECIMAL_DIG     17              /* ceil((1+p*log10(b))-(b==10) */\r
-\r
-#endif /* !_ARM_FLOAT_H_ */\r
diff --git a/include/arch/beehive/machine/_limits.h b/include/arch/beehive/machine/_limits.h
deleted file mode 100644 (file)
index 67492b9..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-\r
- * Copyright (c) 1988, 1993\r
- *     The Regents of the University of California.  All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- * 4. Neither the name of the University nor the names of its contributors\r
- *    may be used to endorse or promote products derived from this software\r
- *    without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- *\r
- *     @(#)limits.h    8.3 (Berkeley) 1/4/94\r
- * $FreeBSD$\r
- */\r
-\r
-#ifndef _MACHINE__LIMITS_H_\r
-#define        _MACHINE__LIMITS_H_\r
-\r
-/*\r
- * According to ANSI (section 2.2.4.2), the values below must be usable by\r
- * #if preprocessing directives.  Additionally, the expression must have the\r
- * same type as would an expression that is an object of the corresponding\r
- * type converted according to the integral promotions.  The subtraction for\r
- * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an\r
- * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).\r
- * These numbers are for the default configuration of gcc.  They work for\r
- * some other compilers as well, but this should not be depended on.\r
- */\r
-\r
-#define        __CHAR_BIT      8               /* number of bits in a char */\r
-\r
-#define        __SCHAR_MAX     0x7f            /* max value for a signed char */\r
-#define        __SCHAR_MIN     (-0x7f - 1)     /* min value for a signed char */\r
-\r
-#define        __UCHAR_MAX     0xff            /* max value for an unsigned char */\r
-\r
-#define        __USHRT_MAX     0xffff          /* max value for an unsigned short */\r
-#define        __SHRT_MAX      0x7fff          /* max value for a short */\r
-#define        __SHRT_MIN      (-0x7fff - 1)   /* min value for a short */\r
-\r
-#define        __UINT_MAX      0xffffffffU     /* max value for an unsigned int */\r
-#define        __INT_MAX       0x7fffffff      /* max value for an int */\r
-#define        __INT_MIN       (-0x7fffffff - 1)       /* min value for an int */\r
-\r
-/* Bad hack for gcc configured to give 64-bit longs. */\r
-#ifdef _LARGE_LONG\r
-#define        __ULONG_MAX     0xffffffffffffffffUL\r
-#define        __LONG_MAX      0x7fffffffffffffffL\r
-#define        __LONG_MIN      (-0x7fffffffffffffffL - 1)\r
-#else\r
-#define        __ULONG_MAX     0xffffffffUL    /* max value for an unsigned long */\r
-#define        __LONG_MAX      0x7fffffffL     /* max value for a long */\r
-#define        __LONG_MIN      (-0x7fffffffL - 1)      /* min value for a long */\r
-#endif\r
-\r
-                       /* max value for an unsigned long long */\r
-#define        __ULLONG_MAX    0xffffffffffffffffULL\r
-#define        __LLONG_MAX     0x7fffffffffffffffLL    /* max value for a long long */\r
-#define        __LLONG_MIN     (-0x7fffffffffffffffLL - 1)  /* min for a long long */\r
-\r
-#define        __SSIZE_MAX     __INT_MAX       /* max value for a ssize_t */\r
-\r
-#define        __SIZE_T_MAX    __UINT_MAX      /* max value for a size_t */\r
-\r
-#define        __OFF_MAX       __LLONG_MAX     /* max value for a off_t */\r
-#define        __OFF_MIN       __LLONG_MIN     /* min value for a off_t */\r
-\r
-/* Quads and long longs are the same size.  Ensure they stay in sync. */\r
-#define        __UQUAD_MAX     __ULLONG_MAX    /* max value for a uquad_t */\r
-#define        __QUAD_MAX      __LLONG_MAX     /* max value for a quad_t */\r
-#define        __QUAD_MIN      __LLONG_MIN     /* min value for a quad_t */\r
-\r
-#ifdef _LARGE_LONG\r
-#define        __LONG_BIT      64\r
-#else\r
-#define        __LONG_BIT      32\r
-#endif\r
-#define        __WORD_BIT      32\r
-\r
-/* Minimum signal stack size. */\r
-#define        __MINSIGSTKSZ   (1024 * 4)\r
-\r
-#endif /* !_MACHINE__LIMITS_H_ */\r
diff --git a/include/arch/beehive/machine/endian.h b/include/arch/beehive/machine/endian.h
deleted file mode 100644 (file)
index 575278b..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-\r
- * Copyright (c) 2001 David E. O'Brien\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- * 3. Neither the name of the University nor the names of its contributors\r
- *    may be used to endorse or promote products derived from this software\r
- *    without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- *\r
- *     @(#)endian.h    8.1 (Berkeley) 6/10/93\r
- * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $\r
- * $FreeBSD$\r
- */\r
-\r
-#ifndef _ENDIAN_H_\r
-#define        _ENDIAN_H_\r
-\r
-#include <sys/_types.h>\r
-\r
-/*\r
- * Definitions for byte order, according to byte significance from low\r
- * address to high.\r
- */\r
-#define _LITTLE_ENDIAN  1234    /* LSB first: i386, vax */\r
-#define _BIG_ENDIAN     4321    /* MSB first: 68000, ibm, net */\r
-#define _PDP_ENDIAN     3412    /* LSB first in word, MSW first in long */\r
-\r
-#define        _BYTE_ORDER     _LITTLE_ENDIAN\r
-\r
-#if __BSD_VISIBLE\r
-#define LITTLE_ENDIAN   _LITTLE_ENDIAN\r
-#define BIG_ENDIAN      _BIG_ENDIAN\r
-#define PDP_ENDIAN      _PDP_ENDIAN\r
-#define BYTE_ORDER      _BYTE_ORDER\r
-#endif\r
-\r
-#define _QUAD_HIGHWORD  1\r
-#define _QUAD_LOWWORD 0\r
-#define __ntohl(x)        (__bswap32(x))\r
-#define __ntohs(x)        (__bswap16(x))\r
-#define __htonl(x)        (__bswap32(x))\r
-#define __htons(x)        (__bswap16(x))\r
-\r
-\r
-static __inline __uint64_t\r
-__bswap64(__uint64_t _x)\r
-{\r
-\r
-       return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |\r
-           ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |\r
-           ((_x << 24) & ((__uint64_t)0xff << 40)) | \r
-           ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));\r
-}\r
-\r
-static __inline __uint32_t\r
-__bswap32_var(__uint32_t v)\r
-{\r
-       __uint32_t t1;\r
-\r
-       __asm __volatile("eor %1, %0, %0, ror #16\n"\r
-                       "bic %1, %1, #0x00ff0000\n"\r
-                       "mov %0, %0, ror #8\n"\r
-                       "eor %0, %0, %1, lsr #8\n"\r
-                        : "+r" (v), "=r" (t1));\r
-       \r
-       return (v);\r
-}\r
-\r
-static __inline __uint16_t\r
-__bswap16_var(__uint16_t v)\r
-{\r
-       __uint32_t ret = v & 0xffff;\r
-\r
-       __asm __volatile(\r
-           "mov    %0, %0, ror #8\n"\r
-           "orr    %0, %0, %0, lsr #16\n"\r
-           "bic    %0, %0, %0, lsl #16"\r
-           : "+r" (ret));\r
-       \r
-       return ((__uint16_t)ret);\r
-}              \r
-\r
-#ifdef __OPTIMIZE__\r
-\r
-#define __bswap32_constant(x)  \\r
-    ((((x) & 0xff000000U) >> 24) |     \\r
-     (((x) & 0x00ff0000U) >>  8) |     \\r
-     (((x) & 0x0000ff00U) <<  8) |     \\r
-     (((x) & 0x000000ffU) << 24))\r
-\r
-#define __bswap16_constant(x)  \\r
-    ((((x) & 0xff00) >> 8) |           \\r
-     (((x) & 0x00ff) << 8))\r
-\r
-#define __bswap16(x)   \\r
-    ((__uint16_t)(__builtin_constant_p(x) ?    \\r
-     __bswap16_constant(x) :                   \\r
-     __bswap16_var(x)))\r
-\r
-#define __bswap32(x)   \\r
-    ((__uint32_t)(__builtin_constant_p(x) ?    \\r
-     __bswap32_constant(x) :                   \\r
-     __bswap32_var(x)))\r
-\r
-#else\r
-#define __bswap16(x)   __bswap16_var(x)\r
-#define __bswap32(x)   __bswap32_var(x)\r
-\r
-#endif /* __OPTIMIZE__ */\r
-#endif /* !_ENDIAN_H_ */\r
-\r
diff --git a/include/arch/beehive/regconvention.h b/include/arch/beehive/regconvention.h
deleted file mode 100644 (file)
index 4034e11..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*\r
- * Copyright (c) 2009, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-// ------------------------------------------------------------\r
-// Standard assembler definitions\r
-\r
-r0 = $0      // fixed zero\r
-r1 = $1      // function return 1\r
-r2 = $2      // not callee save, function return 2\r
-r3 = $3      // not callee save, function argument 1\r
-r4 = $4      // not callee save, function argument 2\r
-r5 = $5      // not callee save, function argument 3\r
-r6 = $6      // not callee save, function argument 4\r
-r7 = $7      // not callee save, function argument 5\r
-r8 = $8      // not callee save, function argument 6\r
-r9 = $9      // callee save\r
-r10 = $10    // callee save\r
-r11 = $11    // callee save\r
-r12 = $12    // callee save\r
-r13 = $13    // callee save\r
-r14 = $14    // callee save\r
-r15 = $15    // callee save\r
-r16 = $16    // callee save\r
-r17 = $17    // callee save\r
-r18 = $18    // callee save\r
-r19 = $19    // callee save\r
-r20 = $20    // callee save\r
-r21 = $21    // callee save\r
-r22 = $22    // callee save\r
-\r
-fp = $23     // callee save, frame pointer\r
-t1 = $24     // not callee save, temporary 1, not avail for reg alloc\r
-t2 = $25     // not callee save, temporary 2, not avail for reg alloc\r
-t3 = $26     // not callee save, temporary 3, not avail for reg alloc\r
-p1 = $27     // not callee save, platform 1, not avail for reg alloc\r
-sp = $28     // callee save, stack pointer\r
-vb = $29     // not callee save, rw & rb only, not avail for reg alloc\r
-\r
-zero = $0    // fixed zero\r
-void = $0    // discard register\r
-a1 = $3      // not callee save, function argument 1\r
-a2 = $4      // not callee save, function argument 2\r
-a3 = $5      // not callee save, function argument 3\r
-a4 = $6      // not callee save, function argument 4\r
-a5 = $7      // not callee save, function argument 5\r
-a6 = $8      // not callee save, function argument 6\r
-s1 = $9      // callee save\r
-s2 = $10     // callee save\r
-s3 = $11     // callee save\r
-s4 = $12     // callee save\r
-s5 = $13     // callee save\r
-s6 = $14     // callee save\r
-s7 = $15     // callee save\r
-s8 = $16     // callee save\r
-s9 = $17     // callee save\r
-s10 = $18    // callee save\r
-s11 = $19    // callee save\r
-s12 = $20    // callee save\r
-s13 = $21    // callee save\r
-s14 = $22    // callee save\r
-\r
-    .assume   zero,0\r
-\r
-// ------------------------------------------------------------\r
diff --git a/include/arch/beehive/simctrl.h b/include/arch/beehive/simctrl.h
deleted file mode 100644 (file)
index cb6a3d7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/**\r
- * \file\r
- * \brief simulator control pseudo-instructions\r
- */\r
-\r
-/*\r
- * Copyright (c) 2009, 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef ARCH_BEEHIVE_SIMCTRL_H\r
-#define ARCH_BEEHIVE_SIMCTRL_H\r
-\r
-#define BEE_SIMCTRL_NOP 0\r
-#define BEE_SIMCTRL_TERMINATE 1\r
-#define BEE_SIMCTRL_TRACEON 2\r
-#define BEE_SIMCTRL_TRACEOFF 3\r
-#define BEE_SIMCTRL_REGISTERS 4\r
-#define BEE_SIMCTRL_ILLEGAL 5\r
-#define BEE_SIMCTRL_NOSEQTRACE 6\r
-#define BEE_SIMCTRL_ADDRCHECK 7\r
-#define BEE_SIMCTRL_CACHE_DELTA 8\r
-#define BEE_SIMCTRL_CACHE_STAT 9\r
-#define BEE_SIMCTRL_BREAK_SIM 10\r
-#define BEE_SIMCTRL_TRACE 11\r
-#define BEE_SIMCTRL_HALT 12\r
-\r
-#ifndef __ASSEMBLER__\r
-#include <sys/cdefs.h>\r
-\r
-#define BEE_SIMCTRL(_s) \\r
-    __asm volatile("simctrl " __XSTRING(_s) ";")\r
-\r
-#endif // __ASSEMBLER__\r
-\r
-#endif // ARCH_BEEHIVE_SIMCTRL_H\r
diff --git a/include/arch/beehive/stopcode.h b/include/arch/beehive/stopcode.h
deleted file mode 100644 (file)
index 4fb6fd2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/**\r
- * \file\r
- * \brief beehive slave stopcode definitions\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef ARCH_BEEHIVE_STOPCODE_H\r
-#define ARCH_BEEHIVE_STOPCODE_H\r
-\r
-#define STOPCODE_POWERUP 0\r
-#define STOPCODE_TIMER 1\r
-#define STOPCODE_STOP 2\r
-#define STOPCODE_BREAK 3\r
-\r
-#endif // ARCH_BEEHIVE_STOPCODE_H\r
index 57b4a93..5f91cad 100644 (file)
 #ifndef LIBBARRELFISH_BARRELFISH_H
 #define LIBBARRELFISH_BARRELFISH_H
 
-/* Beehive does not support translation
- * XXX Should really be defined in a plaform config file
- */
-#ifdef __BEEHIVE__
-#define NOTRANS
-#endif
-
 /* standard libc types and assert */
 #include <stdint.h>
 #include <stddef.h>
index 69dbaf3..2c385dd 100644 (file)
@@ -55,7 +55,7 @@ extern struct cnoderef cnode_root, cnode_task, cnode_base,
 
 /* well-known capabilities */
 extern struct capref cap_root, cap_monitorep, cap_irq, cap_io, cap_dispatcher,
-  cap_selfep, cap_kernel, cap_initep, cap_bmptable, cap_perfmon, cap_dispframe;
+  cap_selfep, cap_kernel, cap_initep, cap_perfmon, cap_dispframe;
 
 /**
  * \brief Returns the number of valid bits in the CSpace address of a cap
index 18e945d..58abc8b 100644 (file)
@@ -46,9 +46,7 @@ struct morecore_state {
     Header *header_freep;
     struct vspace_mmu_aware mmu_state;
 #if 0 // DELETEME
-#ifndef NOTRANS
     struct captrack track_frames[MAX_TRACK_FRAMES];
-#endif
 #endif // 0 DELETEME
 };
 
index 02754cd..98d07de 100644 (file)
@@ -21,7 +21,6 @@
 #include <barrelfish/threads.h>
 
 struct lmp_chan;
-struct bmp_chan;
 struct deferred_event;
 
 // Architecture generic user only dispatcher struct
@@ -51,11 +50,6 @@ struct dispatcher_generic {
     struct heap lmp_endpoint_heap;
 #endif // CONFIG_INTERCONNECT_DRIVER_LMP
 
-#ifdef CONFIG_INTERCONNECT_DRIVER_BMP
-    /// List of BMP channels waiting to retry a send
-    struct bmp_chan *bmp_send_events_list;
-#endif
-
     /// Queue of deferred events (i.e. timers)
     struct deferred_event *deferred_events;
 
index 0774aa1..9b380cd 100644 (file)
@@ -52,10 +52,6 @@ typedef enum idc_bind_flags {
 #include <barrelfish/ump_chan.h>
 #endif
 
-#ifdef CONFIG_INTERCONNECT_DRIVER_BMP
-#include <barrelfish/bmp_chan.h>
-#endif
-
 #if defined(CONFIG_FLOUNDER_BACKEND_UMP_IPI)
 #include <arch/x86/barrelfish/ipi_notify.h>
 #endif
index fdd97aa..2314d77 100644 (file)
@@ -33,12 +33,6 @@ typedef errval_t ump_connect_callback_fn(void *st, struct monitor_binding *mb,
                                          struct capref notify_cap);
 #endif // CONFIG_INTERCONNECT_DRIVER_UMP
 
-#ifdef CONFIG_INTERCONNECT_DRIVER_BMP
-typedef errval_t bmp_connect_callback_fn(void *st, struct monitor_binding *mb,
-                                         uintptr_t mon_id, struct capref bee_ep,
-                                         size_t remote_ep_len);
-#endif // CONFIG_INTERCONNECT_DRIVER_BMP
-
 #ifdef CONFIG_INTERCONNECT_DRIVER_MULTIHOP
 typedef errval_t multihop_connect_callback_fn(void *st, uint64_t vci);
 #endif // CONFIG_INTERCONNECT_DRIVER_MULTIHOP
@@ -58,9 +52,6 @@ struct idc_export {
 #ifdef CONFIG_INTERCONNECT_DRIVER_UMP
     ump_connect_callback_fn *ump_connect_callback;
 #endif
-#ifdef CONFIG_INTERCONNECT_DRIVER_BMP
-    bmp_connect_callback_fn *bmp_connect_callback;
-#endif
 #ifdef CONFIG_INTERCONNECT_DRIVER_MULTIHOP
   multihop_connect_callback_fn *multihop_connect_callback;
 #endif
index 620deed..7412a03 100644 (file)
@@ -31,8 +31,6 @@
 # else
 #  define CACHELINE_BYTES 64
 # endif
-#elif defined(__BEEHIVE__)
-#  define CACHELINE_BYTES 32
 #elif defined(__arm__)
 #  define CACHELINE_BYTES 32
 #else
index abde405..96331ff 100644 (file)
@@ -24,17 +24,10 @@ struct vspace_mmu_vregion_list {
 struct vspace_mmu_aware {
     size_t size;
     size_t consumed;
-#ifdef NOTRANS
-    struct vspace_mmu_vregion_list *head;
-    struct memobj *memobj;
-    struct vspace_mmu_vregion_list init_list;    ///< One to initialize
-    struct memobj_one_frame_one_map init_memobj; ///< One to initialize
-#else
     struct vregion vregion;           ///< Needs just one vregion
     struct memobj_anon memobj;        ///< Needs just one memobj
     lvaddr_t offset;    ///< Offset of free space in anon
     lvaddr_t mapoffset; ///< Offset into the anon that has been mapped in
-#endif
 };
 
 errval_t vspace_mmu_aware_init(struct vspace_mmu_aware *state, size_t size);
index 1ce9908..c67f8ad 100644 (file)
@@ -37,7 +37,6 @@ enum ws_chantype {
     CHANTYPE_LMP_IN,
     CHANTYPE_LMP_OUT,
     CHANTYPE_UMP_IN,
-    CHANTYPE_BMP_OUT,
     CHANTYPE_DEFERRED, ///< Timer events
     CHANTYPE_EVENT_QUEUE,
     CHANTYPE_FLOUNDER,
index aa61dbf..62c4ac8 100644 (file)
@@ -46,7 +46,7 @@ struct dcb;
 
 static inline bool type_is_vnode(enum objtype type)
 {
-    STATIC_ASSERT(27 == ObjType_Num, "Check VNode definitions");
+    STATIC_ASSERT(25 == ObjType_Num, "Check VNode definitions");
 
     return (type == ObjType_VNode_x86_64_pml4 ||
             type == ObjType_VNode_x86_64_pdpt ||
@@ -70,7 +70,7 @@ static inline bool type_is_vnode(enum objtype type)
 static inline size_t vnode_objbits(enum objtype type)
 {
     // This function should be emitted by hamlet or somesuch.
-    STATIC_ASSERT(27 == ObjType_Num, "Check VNode definitions");
+    STATIC_ASSERT(25 == ObjType_Num, "Check VNode definitions");
 
     if (type == ObjType_VNode_x86_64_pml4 ||
         type == ObjType_VNode_x86_64_pdpt ||
@@ -177,14 +177,6 @@ enum io_cmd {
 };
 
 /**
- * BMP Table capability commands.
- */
-enum bmptable_cmd {
-    BMPTableCmd_Set,    ///< Set endpoint for BMP# notifications
-    BMPTableCmd_Delete  ///< Remove notification endpoint for BMP#
-};
-
-/**
  * Notify capability commands.
  */
 enum notify_cmd {
index 0036d46..97e8ec3 100644 (file)
@@ -20,7 +20,6 @@
 enum cpu_type {
     CPU_X86_64,
     CPU_X86_32,
-    CPU_BEEHIVE,
     CPU_SCC,
     CPU_ARM, // XXX: Which ARMs to add here?
     CPU_TYPE_NUM // must be last
index d259c52..6218cec 100644 (file)
 #define TASKCN_SLOT_TRACEBUF    9   ///< Trace buffer cap in task cnode
 #define TASKCN_SLOT_ARGSPAGE    10  ///< ?
 #define TASKCN_SLOT_MON_URPC    11  ///< Frame cap for urpc comm.
-#define TASKCN_SLOT_BMP_TABLE   12  ///< cap to access BMP association table
+/* slot 12 is free */
 #define TASKCN_SLOT_FDSPAGE     13  ///< cap for performance monitoring
 #define TASKCN_SLOT_PERF_MON    14  ///< cap for performance monitoring
 #define TASKCN_SLOTS_USER       15  ///< First free slot in taskcn for user
index 1f21026..456aa48 100644 (file)
@@ -51,8 +51,6 @@ typedef unsigned int idc_flag_t;
 typedef unsigned int idc_flag_t;
 #elif __arm__
 typedef uint8_t idc_flag_t;
-#elif __BEEHIVE__
-typedef uint8_t idc_flag_t;
 #else
 #error "Unknown architecture."
 #endif
index d8e85af..beea813 100644 (file)
@@ -48,7 +48,6 @@ struct sysret {
 /* Architecture-specific syscalls 
  * FIXME: shouldn't these be in an arch-specific header? -AB */
 #define SYSCALL_X86_FPU_TRAP_ON     7     ///< Turn FPU trap on (x86)
-#define SYSCALL_BEEHIVE_TRACE_RUNDOWN 7   ///< Trace DCB rundown
 #define SYSCALL_X86_RELOAD_LDT      8     ///< Reload the LDT register (x86_64)
 
 #define SYSCALL_COUNT               9     ///< Number of syscalls [0..SYSCALL_COUNT - 1]
diff --git a/include/bexec.h b/include/bexec.h
deleted file mode 100644 (file)
index fc38034..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * \file
- * \brief Beehive executable image format
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef BEXEC_H
-#define BEXEC_H
-
-#define BEXEC_IMAGE_SIZE(b) (((b)->bborg + (b)->bbsize - (b)->btorg)<<2)
-#define BEXEC_IMAGE_BASE(b) ((b)->btorg)
-
-typedef struct bexec {
-    unsigned bmagic, btorg, btsize, bdorg, bdsize, bborg, bbsize, bcksum;
-} bexec_t, *pbexec_t;
-
-#define BEXEC_BMAGIC (0xF800220CU)
-#define BEXEC_ARGSMAGIC (0x53475241U)
-
-// XXX: contents of "image pointer" file that appears in the VFS
-struct mem_region;
-struct bimgref_file {
-    uint32_t magic;
-    struct mem_region *region;
-};
-#define BIMGREF_MAGIC 0x42494d47u
-
-#endif
diff --git a/include/flounder/flounder_support_bmp.h b/include/flounder/flounder_support_bmp.h
deleted file mode 100644 (file)
index cd552d7..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * \file
- * \brief Prototypes for use by flounder-generated stubs
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef __FLOUNDER_SUPPORT_BMP_H
-#define __FLOUNDER_SUPPORT_BMP_H
-
-#include <barrelfish/bmp_chan.h>
-#include <flounder/flounder_support_caps.h>
-
-/// Type used for indices of BMP message slots
-typedef uint16_t bmp_index_t;
-#define BMP_INDEX_BITS  16
-#define BMP_MSGNUM_BITS 16
-
-/// Message header word
-union bmp_msg_header {
-    struct {
-        uintptr_t acknum:BMP_INDEX_BITS;
-        uintptr_t msgnum:BMP_MSGNUM_BITS;
-    } x;
-    uintptr_t raw;
-};
-STATIC_ASSERT_SIZEOF(union bmp_msg_header, sizeof(uintptr_t));
-
-/// Special message types
-enum flounder_bmp_msgnum {
-    FL_BMP_ACK = 0,
-    FL_BMP_CAP_ACK = (1 << BMP_INDEX_BITS) - 1,
-};
-
-struct flounder_bmp_state {
-    struct bmp_chan chan;
-
-    bmp_index_t sent_id;   ///< Sequence number of next message to be sent
-    bmp_index_t seq_id;    ///< Last sequence number received from remote
-    bmp_index_t ack_id;    ///< Last sequence number acknowledged by remote
-    bmp_index_t last_ack;  ///< Last acknowledgement we sent to remote
-
-    struct flounder_cap_state capst; ///< State for indirect cap tx/rx machinery
-};
-
-void flounder_stub_bmp_state_init(struct flounder_bmp_state *s, void *binding);
-
-errval_t flounder_stub_bmp_send_string(struct flounder_bmp_state *s,
-                                       int msgnum, const char *str,
-                                       size_t *pos, size_t *len);
-
-errval_t flounder_stub_bmp_recv_string(struct bmp_recv_msg *msg,
-                                       char **str, size_t *pos, size_t *len);
-
-errval_t flounder_stub_bmp_send_buf(struct flounder_bmp_state *s,
-                                    int msgnum, const void *buf,
-                                    size_t len, size_t *pos);
-
-errval_t flounder_stub_bmp_recv_buf(struct bmp_recv_msg *msg,
-                                    void **buf, size_t *len, size_t *pos);
-
-/// Computes (from seq/ack numbers) whether we can currently send on the channel
-static inline bool flounder_stub_bmp_can_send(struct flounder_bmp_state *s,
-                                              size_t totlen)
-{
-    assert(totlen <= s->chan.outeplen);
-    return (bmp_index_t)(s->sent_id - s->ack_id) <= (s->chan.outeplen - totlen);
-}
-
-/// Prepare a header word
-static inline uintptr_t flounder_stub_bmp_mkheader(struct flounder_bmp_state *s,
-                                                   int msgtype)
-{
-    assert(msgtype < (1 << BMP_MSGNUM_BITS)); // check for overflow
-    union bmp_msg_header h = {
-        .x = {
-            .acknum = s->seq_id,
-            .msgnum = msgtype }};
-    return h.raw;
-}
-
-/// Try to send a message
-static inline errval_t flounder_stub_bmp_send(struct flounder_bmp_state *s,
-                                              uintptr_t *msg, size_t totlen)
-{
-    assert(flounder_stub_bmp_can_send(s, totlen));
-    errval_t err = bmp_chan_send(&s->chan, msg, totlen);
-    if (err_is_ok(err)) {
-        s->last_ack = s->seq_id;
-        s->sent_id += totlen + LMP_RECV_HEADER_LENGTH; /* header on receive LMP side */
-    }
-    return err;
-}
-
-/// Process a header word
-static inline int flounder_stub_bmp_process_header(struct flounder_bmp_state *s,
-                                                   uintptr_t header, size_t totlen)
-{
-    union bmp_msg_header h = { .raw = header };
-    s->ack_id = h.x.acknum;
-    s->seq_id += totlen + LMP_RECV_HEADER_LENGTH;
-    return h.x.msgnum;
-}
-
-/// Should we send an ACK?
-static inline bool flounder_stub_bmp_needs_ack(struct flounder_bmp_state *s)
-{
-    // send a forced ACK if the channel would now not be able
-    // to accept another MTU-sized message
-    assert(s->chan.inep->buflen >= BMP_MSG_LENGTH);
-    return (bmp_index_t)(s->seq_id - s->last_ack)
-                >= s->chan.inep->buflen - BMP_MSG_LENGTH;
-}
-
-/// Send an explicit ACK
-static inline errval_t flounder_stub_bmp_send_ack(struct flounder_bmp_state *s)
-{
-    assert(flounder_stub_bmp_can_send(s, 1));
-    uintptr_t msg = flounder_stub_bmp_mkheader(s, FL_BMP_ACK);
-    return flounder_stub_bmp_send(s, &msg, 1);
-}
-
-/// Send a cap ACK (message that we are ready to receive caps)
-static inline errval_t flounder_stub_bmp_send_cap_ack(struct flounder_bmp_state *s)
-{
-    assert(flounder_stub_bmp_can_send(s, 1));
-    uintptr_t msg = flounder_stub_bmp_mkheader(s, FL_BMP_CAP_ACK);
-    return flounder_stub_bmp_send(s, &msg, 1);
-}
-
-#endif // __FLOUNDER_SUPPORT_BMP_H
diff --git a/include/target/beehive/barrelfish/dispatcher_target.h b/include/target/beehive/barrelfish/dispatcher_target.h
deleted file mode 100644 (file)
index 7858768..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * \file
- * \brief Architecture specific dispatcher structure private to the user
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef TARGET_BEEHIVE_BARRELFISH_DISPATCHER_H
-#define TARGET_BEEHIVE_BARRELFISH_DISPATCHER_H
-
-#include <barrelfish_kpi/dispatcher_shared.h>
-#include <barrelfish_kpi/dispatcher_shared_arch.h>
-#include <barrelfish/dispatcher.h>
-
-/// Dispatcher structure (including data accessed only by user code)
-struct dispatcher_beehive {
-    struct dispatcher_shared_beehive d;  ///< Shared (user/kernel) data. Must be first.
-    struct dispatcher_generic generic;   ///< User private data
-    /* Incoming LMP endpoints (buffers and receive cap pointers) follow */
-};
-
-#endif // TARGET_BEEHIVE_BARRELFISH_DISPATCHER_H
diff --git a/include/target/beehive/barrelfish_kpi/coredata_target.h b/include/target/beehive/barrelfish_kpi/coredata_target.h
deleted file mode 100644 (file)
index 2854a6a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * \file
- * \brief Data sent to a newly booted beehive kernel
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef COREDATA_H
-#define COREDATA_H
-
-#include <bexec.h>
-
-// XXX Shouldn't really be visible outside kernel
-typedef struct stringtable {
-    unsigned smagic, slength, soffset[];
-} *pstringtable_t;
-
-/**
- * \brief Data sent to a newly booted kernel
- *
- * \bug Should use mackerel to define this struct instead of packing
- * it so that it matches up between heterogeneous cores.
- */
-struct beehive_core_data {
-    bexec_t   *cpu_module;    ///< bexec structure for the cpu module
-    genpaddr_t module_start;  ///< The start of the cpu module
-    genpaddr_t module_end;    ///< The end of the cpu module
-
-    bexec_t   *monitor_module;    ///< bexec structure for the cpu module
-    genpaddr_t monitor_binary;
-    genpaddr_t monitor_binary_size;
-
-    coreid_t src_core_id;
-    int      chanid;
-
-    genpaddr_t memory_base;
-    genpaddr_t memory_limit;
-
-    struct bootinfo *bootinfo;
-    pstringtable_t strings;
-
-} __attribute__ ((packed));
-
-
-#endif
diff --git a/include/target/beehive/barrelfish_kpi/dispatcher_shared_target.h b/include/target/beehive/barrelfish_kpi/dispatcher_shared_target.h
deleted file mode 100644 (file)
index c4e2a31..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * \file
- * \brief Architecture specific dispatcher struct shared between kernel and user
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef TARGET_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_H
-#define TARGET_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_H
-
-#include <barrelfish_kpi/dispatcher_shared.h>
-
-///< Architecture specific kernel/user shared dispatcher struct
-struct dispatcher_shared_beehive {
-    struct dispatcher_shared_generic d; ///< Generic portion
-
-    union registers_beehive enabled_save_area;  ///< Enabled register save area
-    union registers_beehive disabled_save_area; ///< Disabled register save area
-    union registers_beehive trap_save_area;     ///< Trap register save area
-};
-
-static inline struct dispatcher_shared_beehive*
-get_dispatcher_shared_beehive(dispatcher_handle_t handle)
-{
-    return (struct dispatcher_shared_beehive*)handle;
-}
-
-static inline union registers_beehive*
-dispatcher_beehive_get_enabled_save_area(dispatcher_handle_t handle)
-{
-    struct dispatcher_shared_beehive *disp =
-        get_dispatcher_shared_beehive(handle);
-    return &disp->enabled_save_area;
-}
-
-static inline union registers_beehive*
-dispatcher_beehive_get_disabled_save_area(dispatcher_handle_t handle)
-{
-    struct dispatcher_shared_beehive *disp =
-        get_dispatcher_shared_beehive(handle);
-    return &disp->disabled_save_area;
-}
-
-static inline union registers_beehive*
-dispatcher_beehive_get_trap_save_area(dispatcher_handle_t handle)
-{
-    struct dispatcher_shared_beehive *disp =
-        get_dispatcher_shared_beehive(handle);
-    return &disp->trap_save_area;
-}
-
-#endif // TARGET_BEEHIVE_BARRELFISH_KPI_DISPATCHER_SHARED_H
index fb991ab..dd3375f 100644 (file)
@@ -199,11 +199,6 @@ extern int _end_text_nx;
 #define KILL_CALLEE_SAVES()                                            \
   __asm__ volatile ("" : : : "ebx", "edi", "esi", "esp", "memory", "cc")
 #endif
-#elif defined(__BEEHIVE__)
-#define KILL_CALLEE_SAVES()                                            \
-  __asm__ volatile ("" : : : "r9", "r10", "r11", "r12", "r13",         \
-                   "r14", "r15", "r16", "r17", "r18", "r19",           \
-                   "r20", "r21", "r22", "sp", "memory", "cc")
 #elif defined(__arm__)
 #define KILL_CALLEE_SAVES assert(0 && "THC not yet implemented on ARM")
 #else
@@ -228,10 +223,6 @@ extern int _end_text_nx;
 #elif defined(__i386__)                             
 #define FORCE_ARGS_STACK      
 #define FORCE_ARGS_STACK_CALL 
-#elif defined(__BEEHIVE__)
-#define FORCE_ARGS_STACK      void*__a, void*__b, void*__c, void*__d, \
-                              void*__e, void*__f,
-#define FORCE_ARGS_STACK_CALL NULL, NULL, NULL, NULL, NULL, NULL,
 #elif defined(__arm__)
 #define FORCE_ARGS_STACK assert(0 && "THC not yet implemented on ARM")
 #define FORCE_ARGS_STACK_CALL assert(0 && "THC not yet implemented on ARM")
@@ -258,15 +249,6 @@ extern int _end_text_nx;
 #define RESTORE_OLD_STACK_POINTER(OLD_STACK_PTR)                       \
   __asm__ volatile ("movl %0, %%esp       \n\t"                                \
                    : : "m"(OLD_STACK_PTR))
-#elif defined(__BEEHIVE__)
-#define GET_STACK_POINTER(STACK_PTR)                                   \
-  __asm__ volatile("aqw_add vb, %0, 0       \n\t"                      \
-                  "ld      wq, sp          \n\t"                       \
-                  : : "r"(&(STACK_PTR)) )
-#define RESTORE_OLD_STACK_POINTER(OLD_STACK_PTR)                       \
-  __asm__ volatile("aqr_add vb, %0, 0       \n\t"                      \
-                  "ld      sp, rq          \n\t"                       \
-                  : : "r"(&(OLD_STACK_PTR)) )
 #elif defined(__arm__)
 #define GET_STACK_POINTER(_) assert(0 && "THC not yet implemented on ARM")
 #define RESTORE_OLD_STACK_POINTER(_) assert(0 && "THC not yet implemented on ARM")
@@ -309,29 +291,6 @@ extern int _end_text_nx;
     );
 #define GET_LAZY_AWE(FRAME_PTR)                                                \
     *((FRAME_PTR)+2)   /* was passed as first arg */
-#elif defined(__BEEHIVE__)
-#define INIT_LAZY_AWE(AWE_PTR, LAZY_MARKER)                            \
-  __asm__ volatile (                                                   \
-    " aqr_add vb, fp, 4          \n\t"                                 \
-    " ld   link, rq              \n\t"                                 \
-    " aqw_add vb, %0, 0          \n\t"                                 \
-    " ld   wq, link              \n\t" /* EIP   (our return address) */ \
-    " aqr_add vb, fp, 0          \n\t"                                 \
-    " ld   link, rq              \n\t"                                 \
-    " aqw_add vb, %0, 4          \n\t"                                 \
-    " ld   wq, link                \n\t" /* EBP */                     \
-    " aqw_add vb, fp, 4          \n\t"                                 \
-    " ld   wq, %1                \n\t" /* put marker as ret address  */\
-    : : "r"((AWE_PTR)), "r"((LAZY_MARKER)) : "vb" );
-#define RETURN_CONT(JMP_ADDR)                                          \
-  __asm__ volatile (                                                   \
-    " ld   sp, fp                \n\t" /* free frame                 */ \
-    " aqr_ld  vb, sp             \n\t"                                 \
-    " ld   fp, rq                \n\t" /* restore frame pointer      */        \
-    " j " JMP_ADDR "             \n\t"                                 \
-    );
-#define GET_LAZY_AWE(FRAME_PTR)                                                \
-    *((FRAME_PTR)+2)   /* was passed as first arg */
 #elif defined(__arm__)
 #define INIT_LAZY_AWE(_) assert(0 && "THC not yet implemented on ARM")
 #define RETURN_CONT(_) assert(0 && "THC not yet implemented on ARM")
@@ -405,22 +364,6 @@ extern int _end_text_nx;
                      : "m" (_NS)                                        \
                      : "memory", "cc", "eax", "edx");                  \
   }                                                                    
-#elif defined(__BEEHIVE__)
-#define SWIZZLE_DEF(_NAME,_NS,_FN)                                      \
-  __attribute__((noinline)) void _NAME(void) {                          \
-    __asm__ volatile("aqr_add vb, %0, 0       \n\t"                    \
-                     "ld      r3, rq          \n\t"                    \
-                     "sub     r3, r3, 4       \n\t"                     \
-                     "aqw_add vb, r3, 0       \n\t"                     \
-                     "ld      wq, sp          \n\t"                     \
-                     "ld      sp, r3          \n\t"                     \
-                     "long_call " _FN "       \n\t"                     \
-                     "aqr_add vb, sp, 0       \n\t"                     \
-                     "ld      sp, rq          \n\t"                     \
-                     :                                                 \
-                     : "r" (&(_NS))                                     \
-                     : "memory", "cc", "r2", "r3");                    \
-  }                                                                    
 #elif defined(__arm__)
 #define SWIZZLE_DEF(_NAME,_NS,_FN) assert(0 && "THC not yet implemented on ARM")
 #else
index 91d8de0..53a74b8 100644 (file)
@@ -38,9 +38,6 @@ static inline void thc_latch_acquire(struct thc_latch *l) {
     while (InterlockedCompareExchange(reinterpret_cast<volatile long*>(&l->c), 1L, 0L) == 1) {
     }
     ;
-#elif defined(__BEEHIVE__)
- assert(l->c == 0);
- l->c = 1;
 #else
   do {
     if (__sync_bool_compare_and_swap(&l->c, 0, 1)) {
index 0b84e38..3426ed1 100644 (file)
@@ -15,7 +15,7 @@
 #ifndef LIBBARRELFISH_TRACE_H
 #define LIBBARRELFISH_TRACE_H
 
-#if defined(__x86_64__) || defined(__BEEHIVE__)
+#if defined(__x86_64__)
 #define TRACING_EXISTS 1
 #endif
 
 #endif // IN_KERNEL
 #endif // __x86_64__
 
-#ifdef __BEEHIVE__
-#include <bench/bench_arch.h>
-#ifndef IN_KERNEL
-/* XXX: private includes from libbarrelfish */
-#include <barrelfish/dispatcher_arch.h>
-#include <barrelfish/curdispatcher_arch.h>
-#include <barrelfish/syscall_arch.h>
-#endif // IN_KERNEL
-#endif // __BEEHIVE__
-
 #include <barrelfish/sys_debug.h>
 
 /*
 #define TRACE_EVENT_SCHED_SCHEDULE      0xED03
 #define TRACE_EVENT_SCHED_CURRENT       0xED04
 
-#define TRACE_EVENT_BMP_RX              0xBEE1
-#define TRACE_EVENT_BMP_PRE_DELIVER     0xBEE2
-#define TRACE_EVENT_BMP_POST_DELIVER    0xBEE3
-#define TRACE_EVENT_BMP_PUMP            0xBEE4
-#define TRACE_EVENT_BMP_SEND            0xBEE5
-
-
 #define TRACE_SUBSYS_THREADS            0xEEEE
 
 #define TRACE_EVENT_BARRIER_ENTER       0x0100
@@ -321,51 +304,6 @@ static inline bool trace_cas(volatile uintptr_t *address, uintptr_t old,
 #define TRACE_TIMESTAMP() 0
 
 
-#elif defined(__BEEHIVE__)
-
-static inline bool trace_cas(volatile uintptr_t *address, uintptr_t old,
-        uintptr_t nw)
-{
-    uintptr_t discardable;
-    uintptr_t difference; // 0 if old was still old
-    /* We write the new value somewhere.  Possibly to *address and
-     * possibly to discardable.  Putting the new value in wq while we
-     * do the test causes this to be (single core) atomic. */
-    __asm volatile("ld wq, %[nw]\n\t"
-                  "aqr_ld zero, %[addr]\n\t"
-                  "sub %[diff], rq, %[old]\n\t"
-                  "jnz . + 3\n\t"
-                  "aqw_ld zero, %[addr]\n\t"
-                  "j . + 2\n\t"
-                  "aqw_ld zero, %[discard]\n"
-                  : [diff] "=&r" (difference)
-                  : [addr] "r" (address)
-                  , [nw] "r" (nw)
-                  , [old] "r" (old)
-                  , [discard] "r" (&discardable)
-                  : "memory", "cc");
-    return (difference == 0);
-}
-
-#define TRACE_TIMESTAMP() bench_tsc()
-
-static inline int arch_is_simulator(void)
-{
-    volatile unsigned int *ptr = (void*)0x02;
-    unsigned int val = *ptr;
-
-    val >>= 18;
-    val &= 0x7f;
-    return val == 2 ? 1 : 0;
-}
-
-extern void simtrace(uint32_t word1, uint32_t word2);
-
-
-__asm("_simtrace: simctrl 11; j link");
-
-
-
 #else
 
 #warning You need to supply CAS and a timestamp function for this architecture.
@@ -464,13 +402,6 @@ void trace_init_disp(void);
 static inline uintptr_t trace_reserve_and_fill_slot(struct trace_event *ev,
                                                    struct trace_buffer *buf)
 {
-#ifdef __BEEHIVE__
-    /* Top bit is rundown event which must be reprocessed later */
-    if (arch_is_simulator() && ((ev->timestamp >> 63) == 0)) {
-       simtrace(ev->u.w32.word1, ev->u.w32.word2);
-       return SYS_ERR_OK;
-    }
-#endif
     uintptr_t i, nw;
     struct trace_event *slot;
 
@@ -538,9 +469,6 @@ static inline errval_t trace_write_event(struct trace_event *ev)
         * and in particular because trace_snapshot uses
         * trace_write_event... */
        trace_buf->done_rundown = true;
-#ifdef __BEEHIVE__
-       trace_snapshot();
-#endif
     }
     (void) trace_reserve_and_fill_slot(ev, trace_buf);
 
@@ -610,9 +538,6 @@ static inline errval_t trace_write_event(struct trace_event *ev)
         * and in particular because sys_rundown uses
         * trace_write_event... */
        trace_buf->done_rundown = true;
-#ifdef __BEEHIVE__
-       (void) sys_rundown();
-#endif
     }
     (void) trace_reserve_and_fill_slot(ev, trace_buf);
 
@@ -663,14 +588,9 @@ static inline errval_t trace_event(uint16_t subsys, uint16_t event, uint32_t arg
 #ifdef CONFIG_TRACE
     struct trace_event ev;
     ev.timestamp = TRACE_TIMESTAMP();
-#ifdef __BEEHIVE__
-    ev.u.w32.word1 = arg;
-    ev.u.w32.word2 = (subsys << 16) | event;
-#else
     ev.u.ev.subsystem = subsys;
     ev.u.ev.event     = event;
     ev.u.ev.arg       = arg;
-#endif
 
 #if TRACE_ONLY_SUB_NET
     /* NOTE: This will ensure that only network related messages are logged. PS */
index 890e838..94e2922 100644 (file)
@@ -138,12 +138,5 @@ in [
    (let sfiles = [ "boot.S", "exceptions.S", "paging_cp.S" ]
         cfiles = [ "exn.c", "exec.c", "init.c", "integrator.c", "kludges.c", "kputchar.c", "misc.c", "pl011_uart.c", "paging.c", "phys_mmap.c", "startup_arch.c", "syscall.c" ]
         mackerelFiles = [ "arm", "arm_icp_pit", "arm_icp_pic0", "pl011_uart" ]
-    in mkrules "arm11mp" cfiles sfiles mackerelFiles [] [] [] [] []),
-
-   -- beehive
-   (let sfiles = [ "boot.S", "ringtest.S", "findbits.S", "context.S", "dcache.S" ]
-        cfiles = ["exec.c", "gdb_arch.c", "init.c", "misc.c", "serial.c", "startup_arch.c",
-                  "syscall.c", "page_mappings_arch.c", "ringbmp.c", "kputchar.c" ] ++ microbench
-        mackerelFiles = []
-    in mkrules "beehive" cfiles sfiles mackerelFiles [] [] [] [] [])
+    in mkrules "arm11mp" cfiles sfiles mackerelFiles [] [] [] [] [])
   ]
diff --git a/kernel/arch/beehive/Hakefile b/kernel/arch/beehive/Hakefile
deleted file mode 100644 (file)
index c3aa06c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
---------------------------------------------------------------------------
--- Copyright (c) 2007-2010, ETH Zurich.
--- All rights reserved.
---
--- This file is distributed under the terms in the attached LICENSE file.
--- If you do not find this file, copies can be found by writing to:
--- ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
---
--- Hakefile for kernel
--- 
---------------------------------------------------------------------------
-
-let 
-    arch = "beehive"
-    opts = kernelOptions arch
-    objs = [ objectFilePath opts f | f <- [ "core1.S", "ringtest.S",
-                                            "slave.S", "dcache.S",
-                                            "hyper.c", "serial.c" ] ]
-    
-    hyperLdFlags = [ Str "-Wl,-N",
-                     Str "-Wl,-codebase=1800", Str "-Wl,-datafloat",
-                     NStr "-Wl,-map,", Out arch "hyper.map",
-                     Str "-fno-builtin"
-                   ]
-
-    linkHyper opts objs libs kbin = 
-      Rules [ Rule (
-           [ Str "Bcc" ]
-           ++ hyperLdFlags
-           ++ (extraLdFlags opts)
-           ++ [ Str "-o", Out arch kbin ]
-           ++ [ In BuildTree arch o | o <- objs ]
-           ++ [ In BuildTree arch l | l <- libs ]
-           ++ [ Str "-lgcc" ]
-      ) ]
-in 
-  [ compileCFiles opts [ "hyper.c" ], -- serial.c compiled by kernel build
-    assembleSFiles opts [ "core1.S", "slave.S" ],
-    linkHyper opts objs [] "/sbin/hyper"
-  ]
diff --git a/kernel/arch/beehive/beekernel.h b/kernel/arch/beehive/beekernel.h
deleted file mode 100644 (file)
index 5fca836..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/**\r
- * \file\r
- * \brief Beehive intra-kernel prototypes etc.\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef KERNEL_ARCH_BEEHIVE_BEEKERNEL_H\r
-#define KERNEL_ARCH_BEEHIVE_BEEKERNEL_H\r
-\r
-#define HANDLE_TIMER_HOW_SYNC 0\r
-#define HANDLE_TIMER_HOW_SYSCALL 1\r
-#define HANDLE_TIMER_HOW_RESUME 2\r
-#define HANDLE_TIMER_HOW_EXECUTE 3\r
-\r
-#ifndef __ASSEMBLER__\r
-\r
-#include <barrelfish_kpi/types.h> // coreid_t\r
-\r
-/**\r
- * \brief Return ID of current core \r
- *\r
- */\r
-\r
-static inline coreid_t arch_get_core_id(void)\r
-{\r
-    volatile unsigned int *ptr = (void*)0x02;\r
-    unsigned int val = *ptr;\r
\r
-    return (val >> 10) & 0xf;\r
-}\r
-\r
-/**\r
- * \brief Returns ID of the Ethernet core, one more than\r
- * last regular core.\r
- *\r
- */\r
-\r
-static inline coreid_t arch_get_max_core_id(void)\r
-{\r
-    volatile unsigned int *ptr = (void*)0x02;\r
-    unsigned int val = *ptr;\r
-    return (val >> 14) & 0xf;\r
-}\r
-\r
-/**\r
- * \brief Returns read of identity register\r
- *\r
- */\r
-\r
-static inline uint32_t arch_read_identity_register(void)\r
-{\r
-    volatile unsigned int *ptr = (void*)0x02;\r
-    unsigned int val = *ptr;\r
-    return val;\r
-}\r
-\r
-/**\r
- * \brief returns non zero if running on simulator\r
- *\r
- */\r
-\r
-#ifndef LIBBARRELFISH_TRACE_H\r
-\r
-static inline int arch_is_simulator(void)\r
-{\r
-    volatile unsigned int *ptr = (void*)0x02;\r
-    unsigned int val = *ptr;\r
-\r
-    val >>= 18;\r
-    val &= 0x7f;\r
-    return val == 2 ? 1 : 0;\r
-}\r
-\r
-#endif // LIBBARRELFISH_TRACE_H\r
-\r
-#endif // __ASSEMBLER__\r
-\r
-#endif // KERNEL_ARCH_BEEHIVE_BEEKERNEL_H\r
diff --git a/kernel/arch/beehive/bmp.h b/kernel/arch/beehive/bmp.h
deleted file mode 100644 (file)
index 824d9b3..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/**\r
- * \file\r
- * \brief Beehive message transport kernel component\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef KERNEL_ARCH_BEEHIVE_BMP_H\r
-#define KERNEL_ARCH_BEEHIVE_BMP_H\r
-\r
-#include <stdlib.h> // uint32_t\r
-#include <barrelfish_kpi/legacy_idc_buffer.h> // struct idc_recv_msg\r
-#include <barrelfish_kpi/syscalls.h> // struct sysret\r
-#include <corearea.h> // struct corearea\r
-\r
-void bmp_init(void);\r
-\r
-void bmp_pump(void);\r
-\r
-// This returns when the messenger is empty and either a message\r
-// arrived at some point, or a timer interrupt is pending.\r
-void bmp_pump_until_timer(struct corearea *corearea);\r
-\r
-void bmp_send(int core, int assoc, int size, uint32_t *words);\r
-\r
-struct sysret bmp_table_set(struct capability *to, struct idc_recv_msg *msg);\r
-struct sysret bmp_table_delete(struct capability *to, struct idc_recv_msg *msg);\r
-\r
-#endif // KERNEL_ARCH_BEEHIVE_BMP_H\r
diff --git a/kernel/arch/beehive/boot.S b/kernel/arch/beehive/boot.S
deleted file mode 100644 (file)
index c822f6f..0000000
+++ /dev/null
@@ -1,470 +0,0 @@
-/**
- * \file
- * \brief Bootstrap the kernel.
- */
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef __ASSEMBLER__
-#define __ASSEMBLER__   1
-#endif
-
-#include <regconvention.h>
-#include <barrelfish_kpi/syscalls.h>
-#include <asmoffsets.h>
-#include <beej7.h>
-#include <simctrl.h>
-#include "beekernel.h"
-       
-// ------------------------------------------------------------
-
-       .code
-
-       .globl main /* bsim requires that this be called main */
-       .globl __code_ibefore
-__code_ibefore:
-main:  j       .+8             /* must be +8 for correct magic number */
-btorg: .word   0
-btsize:        .word   0
-bdorg: .word   0
-bdsize:        .word   0
-bborg: .word   0
-bbsize:        .word   0
-bcksum:        .word   0
-
-       .data
-       .globl __data_ibefore
-__data_ibefore:
-       .code
-       
-after: orn     r0, r0, r0
-       or      r1, r0, r0
-       jnz     badv1
-       
-vok:
-       sub     r2, pc, 11      /* r2 points at cs:main */
-       add_lsl r3, r2, zero, 2 /* r3 points at ds:main */
-       aqr_add vb, r3, 4       /* read btorg */
-       ld      r4, rq
-       sub     r5, r4, r2
-       jnz     badhdr
-
-       /* now we can assume we are running at the address we were
-        * linked for. XXX data and bss layout ??? */
-       ld      t1, r3
-       aqr_add vb, r3, 20
-       aqr_add vb, r3, 24
-       sub     r3, rq, r2      /* r3 has (word) bborg - btorg*/
-       add     r3, rq, r3      /* r3 has (word) bborg + bbsize - btorg */
-       add     r4, zero, zero  /* r4 is checksum */
-       sub     r2, t1, 4       /* loop incs r2 first before load */
-cklp:                          /* r2 is data pointer, r3 is size in words */
-       aqr_add r2, r2, 4
-       add     r4, rq, r4
-       sub     r3, r3, 1
-       jnz     cklp
-       rol     r5, r4, 1
-       xorn    vb, r4, r5
-       jnz     badck
-
-ckok:  
-       long_ld sp, stack
-       long_ld a1, guardz
-       lsr     a1, a1, 2
-       ld      a2, 512 // 512 words of guard
-       ld      a3, 0
-       ld      a4, 0
-       simctrl BEE_SIMCTRL_ADDRCHECK
-       /* Argument to bmain used cross-core is in s1 */
-       ld      a1, s1
-       long_call _bmain
-       long_call _reboot
-       j __end_simulation
-
-
-badv1: andn    t2, t2, t2
-       add     r1, t2, "v"
-       add     t2, t2, "1"
-       j       dieloop
-
-badhdr:        simctrl BEE_SIMCTRL_REGISTERS
-       andn    t2, t2, t2
-       add     r1, t2, "h"
-       add     r2, t2, "d"
-       j       dieloop
-
-badck: simctrl BEE_SIMCTRL_REGISTERS
-       andn    t2, t2, t2
-       add     r1, t2, "c"
-       add     r2, t2, "k"
-       j       dieloop
-
-       /* r1 with char 1, r2 with char 2 */
-dieloop:andn   t2, t2, t2
-T1:    aqr_add t3, t2, 0x02
-       add     t3, rq, t2
-       and     t3, t3, 0x200
-       sub     t3, t3, 0
-       jz      T1
-       aqw_add t3, t2, 0x02
-       add     wq, r1, 0x200 /* r1 + go*/
-T2:    aqr_add t3, t2, 0x02
-       add     t3, rq, t2
-       and     t3, t3, 0x200
-       sub     t3, t3, 0
-       jz      T2
-       aqw_add t3, t2, 0x02
-       add     wq, r2, 0x200 /* r2 + go */
-       simctrl BEE_SIMCTRL_TERMINATE
-       j       T1
-
-               
-       .globl __end_simulation
-__end_simulation:
-       simctrl BEE_SIMCTRL_TERMINATE
-       j __end_simulation
-
-/* Performing system calls.  At the C level they all return a struct
- * sysret which, by beehive calling convention means that the first
- * *result* register is used to *pass* the address where the return
- * value should be written.  At the assembler level we use t1 to
- * contain the system call number.  There are several other
- * errors here including that we trust the user r1 for pointer of
- * location to write the struct sysret return value into */
-
-#if SYSCALL_INVOKE != 0
-#error "This code assumes invoke is zero"
-#endif
-#if SYS_ERR_OK != 0
-#error "This code assumes SYS_ERR_OK is zero"
-#endif
-
-       .globl _systrap
-_systrap:
-       /* check for system call number in range */
-       sub     vb, t1, SYSCALL_COUNT
-       jc      systrapbad
-systrap2:
-       /* switch to kernel stack and store old link and sp */
-       ld      wq, link
-       ld      wq, sp
-       long_ld sp, stack
-       aqw_sub sp, sp, 4
-       aqw_sub sp, sp, 4
-
-       lsl     t1, t1, 2
-       jz      systrapinvoke
-
-       /* table dispatch */
-       long_ld link, _syscalls
-       aqr_add vb, link, t1
-systrap3:
-       call    rq
-       /* atomically, are there any pending timer interrupts?  we
-        * want it to look like the intererupt happened right at the
-        * return from the system call */
-       ld      wq, zero        // wq non empty prevents interrupts
-       j7      BEE_J7_COREAREA
-       aqr_add t1, link, OFFSETOF_COREAREA_KERNEL_PENDING
-       ld      t2, rq
-       jnz     systrap4
-       /* no interrupt pending, return */
-       aqr_ld  void, sp
-       aqr_add link, sp, 4
-       ld      sp, rq
-       aqw_ld  void, link      // release wq non empty, write into k stack
-       j       rq              // next is j so no interrupt in gap
-
-systrapinvoke:
-       /* This code saves the callee-save registers into the
-        * user dispatcher state just in case this invoke
-        * happens to be IDC. */
-       // Set return code to zero
-       ld      r1, zero
-       call    syssavecontext
-       aqr_long_ld link, _syscalls     // assumes invoke is 0
-       j       systrap3
-
-systrap4:
-       /* kernel pending non zero, wq still has dummy in it */
-       /* we no longer need to keep the wq non empty. An additional
-        * timer interrupt here will only increment pending which will
-        * either be noticed when we call handle_timer, or will be
-        * noticed when the dispatcher resumes something, or idles */
-       aqw_sub void, sp, 4     // safe dump of wq non empty token
-       call    syssavecontext
-       sub     a1, t3, 31*4    // arg is move t3 back to start
-       ld      a2, HANDLE_TIMER_HOW_SYSCALL
-       add     sp, sp, 8
-       long_call _handle_timer
-       /* Shouldnt come back, but if it does, ok to fall through */
-
-syssavep1bad:
-       simctrl BEE_SIMCTRL_REGISTERS
-       j7      BEE_J7_BREAKPOINT
-       j       syssavep1bad
-
-syssavecontext:
-       /* This subroutine saves the callee-save registers and return
-        * value into the user dispatcher state.  It assumes that the
-        * users stack pointer and return address are on the current
-        * stack. It propagates disp->disabled to dcb->disabled.
-        * The address of the save_area pc slot is returned in t3. */
-       ld      t2, link
-       // Check that dcb_current->disp == p1
-       aqr_long_ld link, _dcb_current
-       ld      link, rq
-       aqr_add vb, link, OFFSETOF_DCB_DISP
-       sub     vb, rq, p1
-       jnz     syssavep1bad
-       // t3 = dcb_current->disabled = disp->disabled
-       aqr_add vb, p1, OFFSETOF_DISP_DISABLED
-       aqw_add vb, link, OFFSETOF_DCB_DISABLED
-       ld      t3, rq
-       ld      wq, t3
-       // Selected save area t3 = (t3 ? disabled_save_area : enabled_save_area)
-       jz      .+3
-       add     t3, p1, OFFSETOF_DISP_DISABLED_AREA
-       j       .+2
-       add     t3, p1, OFFSETOF_DISP_ENABLED_AREA
-
-       // Save callee-save and return value etc. Note save r1 and r2
-       aqw_ld  vb, t3
-       aqw_add t3, t3, 4
-       aqw_add t3, t3, 4
-       ld      wq, zero
-       ld      wq, r1
-       ld      wq, r2
-
-       add     t3, t3, 6*4     // r2 to r8
-       ld      t1, 15          // r9--r23
-       aqw_add t3, t3, 4       // first to r9==s1
-       sub     t1, t1, 1
-       jnz     .-2
-       ld      wq, s1
-       ld      wq, s2
-       ld      wq, s3
-       ld      wq, s4
-       ld      wq, s5
-       ld      wq, s6
-       ld      wq, s7
-       ld      wq, s8
-       ld      wq, s9
-       ld      wq, s10
-       ld      wq, s11
-       ld      wq, s12
-       ld      wq, s13
-       ld      wq, s14
-       ld      wq, fp
-
-       aqr_ld  void, sp        // read stacked sp
-       aqr_add void, sp, 4     // read stacked link
-       aqw_add t3, t3, 4*4     // from r23 to r27==p1
-       aqw_add t3, t3, 4       // p28==sp
-       aqw_add t3, t3, 3*4     // from r28 to r31
-       ld      wq, p1          // have to save this since it will be loaded
-       ld      wq, rq
-       ld      wq, rq
-       j       t2      
-
-systrapbad:
-       /* here is t1 is an out of range system call number */
-       simctrl BEE_SIMCTRL_REGISTERS
-       ld      a1, t1
-       ld      t1, SYSCALL_COUNT
-       j       systrap2
-
-/* Performing timer interrupts.  The assembler in slave.S has taken
- * stop from the master core and if the core was not running in the
- * kernel then it enters us here.  We have to do most of the saving
- * and copy over a few registers that were saved in the corearea.
- */
-
-       .globl  _interrupt
-_interrupt:
-       // Check that dcb_current->disp == p1
-       long_ld link, _dcb_current
-       aqr_ld  void, link
-       ld      link, rq
-       aqr_add void, link, OFFSETOF_DCB_DISP
-       sub     void, rq, p1
-       jnz     interruptbad
-       // t3 = dcb_current->disabled = disp->disabled
-       aqr_add void, p1, OFFSETOF_DISP_DISABLED
-       aqw_add void, link, OFFSETOF_DCB_DISABLED
-       ld      t3, rq
-       ld      wq, t3
-       // Selected save area t3 = (t3 ? disabled_save_area : enabled_save_area)
-       jz      inten
-intdi: add     t3, p1, OFFSETOF_DISP_DISABLED_AREA
-       j       intsave
-inten: add     t3, p1, OFFSETOF_DISP_ENABLED_AREA
-intsave:
-       // Load t1, t2, t3, link, pc into rq
-       j7      BEE_J7_COREAREA
-       aqr_add void, link, 24 * 4
-       aqr_add void, link, 25 * 4
-       aqr_add void, link, 26 * 4
-       aqr_add void, link, 30 * 4
-       aqr_add void, link, 31 * 4
-       ld      wq, $1
-       ld      wq, $2
-       ld      wq, $3
-       ld      wq, $4
-       ld      wq, $5
-       ld      wq, $6
-       ld      wq, $7
-       ld      wq, $8
-       ld      wq, $9
-       ld      wq, $10
-       ld      wq, $11
-       ld      wq, $12
-       ld      wq, $13
-       ld      wq, $14
-       ld      wq, $15
-       ld      wq, $16
-       ld      wq, $17
-       ld      wq, $18
-       ld      wq, $19
-       ld      wq, $20
-       ld      wq, $21
-       ld      wq, $22
-       ld      wq, $23
-       ld      wq, rq // t1 = 24
-       ld      wq, rq // t2 = 25
-       ld      wq, rq // t3 = 26
-       ld      wq, $27
-       ld      wq, $28
-       add     wq, zero, $29    //r29 (via a port) is rq. Use the b port
-       ld      wq, rq // link = 30
-       ld      wq, rq // link = 31
-
-       ld      t1, t3
-       ld      t2, 31
-       // t1 points to base, t3 to current (first is r1), t2 count
-ints1: aqw_add t3, t3, 4
-       sub     t2, t2, 1
-       jnz     ints1
-       // Still need to move count and the rq words
-       //simctrl       BEE_SIMCTRL_TRACEON
-       aqr_add void, link, 0
-       aqw_add void, t1, 0
-       add     link, link, 32 * 4 - 4
-       ld      t2, rq
-       ld      wq, t2
-ints2: sub     t2, t2, 1
-       jm      ints3
-       aqr_add link, link, 4
-       aqw_add t3, t3, 4
-       ld      wq, rq
-       j       ints2
-ints3: // rq copied
-       /* Upcall to C need stack */
-       //simctrl       BEE_SIMCTRL_TRACEOFF
-       ld      a1, t1
-       ld      a2, HANDLE_TIMER_HOW_SYNC
-       long_ld sp, stack
-       ld      fp, 0
-       long_call _handle_timer
-       /* Shouldnt come back, but if it does, ok to fall through */
-
-interruptbad:
-       simctrl BEE_SIMCTRL_REGISTERS
-       j7      BEE_J7_BREAKPOINT
-       j       interruptbad
-
-/* Extra misc things
- */
-
-// Look at corearea->kernel_pending with wq non empty
-       .globl _halt_unless_timer_pending
-_halt_unless_timer_pending:
-       ld      wq, link                // save it also defers interrupts
-       j7      BEE_J7_COREAREA
-       aqr_add void, link, OFFSETOF_COREAREA_KERNEL_PENDING
-       ld      void, rq
-       jnz     nohalt
-       simctrl BEE_SIMCTRL_HALT
-nohalt:        aqw_sub void, sp, 4
-       aqr_sub void, sp, 4
-       j       rq
-
-
-       .globl _mmu_add_entry
-_mmu_add_entry:
-       simctrl BEE_SIMCTRL_ADDRCHECK
-       j       link
-
-       .globl  _lli_test
-_lli_test:
-       ld      t1, link
-       aqr_ld  void, sp
-       j7      BEE_J7_TEST_RQ_EMPTY
-       ld      void, link
-       jz      . - 2
-       x_lli   0xE8000000
-       ld      void, void
-       ld      void, void
-       j7      BEE_J7_TEST_RQ_EMPTY
-       ld      r1, link
-       jz      t1
-       ld      void, rq
-       j       t1
-
-       .globl _skip_test
-_skip_test:
-       ld      a2, 0x003
-       ld      a3, 0x00C
-       ld      a4, 0x030
-       ld      a5, 0x0C0
-       ld      a6, 0x300
-       ld      r1, 0
-st1:   
-       xor     a2, a2, 0x003
-       xor     a3, a3, 0x00C
-       xor     a4, a4, 0x030
-       xor     a5, a5, 0x0C0
-       xor     a6, a6, 0x300
-
-       xor     a2, a2, 0x001
-       xor     a3, a3, 0x004
-       xor     a4, a4, 0x010
-       xor     a5, a5, 0x040
-       xor     a6, a6, 0x100
-
-       xor     a2, a2, 0x002
-       xor     a3, a3, 0x008
-       xor     a4, a4, 0x020
-       xor     a5, a5, 0x080
-       xor     a6, a6, 0x200
-       
-       xor     r1, r1, 0x3FF
-       xor     r1, r1, a2
-       xor     r1, r1, a3
-       xor     r1, r1, a4
-       xor     r1, r1, a5
-       xor     r1, r1, a6
-       jnz     st2
-
-       sub     a1, a1, 1
-       jnz     st1
-       j       link
-
-       j7      BEE_J7_BREAKPOINT
-
-st2:   simctrl BEE_SIMCTRL_REGISTERS
-       j       link
-
-       .bss
-guardz:
-       .blkw 512 // 2kB
-       .blkw 768 // 3kB
-       .globl  stack           // also used in context.S
-stack: // is_copy needs 1320 bytes all on its own!
-       
diff --git a/kernel/arch/beehive/context.S b/kernel/arch/beehive/context.S
deleted file mode 100644 (file)
index f319053..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/**\r
- * \file\r
- * \brief Provide kernel context switch code\r
- */\r
-/*\r
- * Copyright (c) 2010 ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef __ASSEMBLER__\r
-#define __ASSEMBLER__   1\r
-#endif\r
-\r
-#include <regconvention.h>\r
-#include <beej7.h>\r
-#include <asmoffsets.h>\r
-#include "beekernel.h"\r
-\r
-// ------------------------------------------------------------\r
-\r
-       .code\r
-\r
-       .globl __resume\r
-       /* Argument a1 is union registers_beehive *regs */\r
-__resume:\r
-       /* We need to check if a software interrupt is pending. If so\r
-        * we will pretend that this is the context we just saved.\r
-        * If a hardware interrupt happens during this routine we\r
-        * need to ensure it happens after the return to user mode.\r
-        * This is tricky since we are resuming a full state of\r
-        * all registers here, we use a trick where the address to\r
-        * empty the wq token comes from the rq and not from register.\r
-        */\r
-       add     wq, a1, 31*4    // wq non empty with address to zap\r
-\r
-       /* look at pending flag, non zero take interrupt */\r
-       j7      BEE_J7_COREAREA\r
-       aqr_add void, link, OFFSETOF_COREAREA_KERNEL_PENDING\r
-       ld      void, rq\r
-       jnz     resintr\r
-\r
-       /* we are going to resume this context and poison it to\r
-        * prevent reuse (catch bugs) by setting pc to zero */\r
-       ld      wq, zero        // wq additional non empty\r
-       aqw_sub void, sp, 4     // write zap address to stack\r
-       \r
-       aqr_ld  link, a1        // fetch count\r
-       ld      t1, 30          // fetch 30 more\r
-res1:  aqr_add link, link, 4\r
-       sub     t1, t1, 1\r
-       jnz     res1\r
-       aqr_sub void, sp, 4     // fetch zap address from stack\r
-       aqr_add link, link, 4   // fetch pc\r
-       \r
-       // Now load them\r
-       ld      $28, rq         // entry 0 is RQ count\r
-       ld      $1, rq\r
-       ld      $2, rq\r
-       ld      $3, rq\r
-       ld      $4, rq\r
-       ld      $5, rq\r
-       ld      $6, rq\r
-       ld      $7, rq\r
-       ld      $8, rq\r
-       ld      $9, rq\r
-       ld      $10, rq\r
-       ld      $11, rq\r
-       ld      $12, rq\r
-       ld      $13, rq\r
-       ld      $14, rq\r
-       ld      $15, rq\r
-       ld      $16, rq\r
-       ld      $17, rq\r
-       ld      $18, rq\r
-       ld      $19, rq\r
-       ld      $20, rq\r
-       ld      $21, rq\r
-       ld      $22, rq\r
-       ld      $23, rq\r
-       ld      $24, rq\r
-       ld      $25, rq\r
-       ld      $26, rq\r
-       ld      $27, rq\r
-       /* rq now has r28, r29, link, zapaddr, pc.  r28=rqcount */\r
-res2:  sub     $28, $28, 1\r
-       jm      res3\r
-       aqr_add link, link, 4\r
-       j       res2\r
-res3:\r
-       ld      $28, rq\r
-       ld      $29, rq\r
-       ld      link, rq\r
-       aqw_ld  void, rq        // zap context and release empty wq\r
-       j       rq\r
-\r
-resintr:\r
-       /* wq still has dummy in it.  a1 still has the address of\r
-        * the context, which is what we need for calling _handle_timer.\r
-        * Just need to empty out wq and pass how argument. */\r
-       long_ld sp, stack\r
-       aqw_sub void, sp, 4\r
-       ld      fp, 0\r
-       ld      a2, HANDLE_TIMER_HOW_RESUME\r
-       long_call _handle_timer\r
-       /* should not return */\r
-       j7      BEE_J7_BREAKPOINT\r
-\r
-// ------------------------------------------------------------\r
-\r
-       .globl  __execute\r
-       /* Argument a1 is entry address */\r
-       /* Argument a2 is dispatcher pointer */\r
-__execute:\r
-       /* We need to check if a software interrupt is pending.  If so\r
-        * we will abort this execute.  We know that if we are executing\r
-        * it is because we are making a scheduler activation on an\r
-        * enabled domain and have set it to disabled in the dispatcher\r
-        * (so the scheduler activation handler is resumed until such\r
-        * time as it has decided to re-enable activations) so all\r
-        * we need to do is undo the scheduler activation mark in the\r
-        * dispatcher. */\r
-       ld      wq, zero                // wq non empty\r
-\r
-       j7      BEE_J7_COREAREA\r
-       aqr_add void, link, OFFSETOF_COREAREA_KERNEL_PENDING\r
-       ld      void, rq\r
-       jnz     exeintr\r
-\r
-       /* we are going to make the jump */\r
-       ld      p1, a2\r
-       aqw_sub void, sp, 4             // drop dummy to stack\r
-       call    a1\r
-       /* should not return */\r
-       j7      BEE_J7_BREAKPOINT\r
-\r
-exeintr:\r
-       /* wq still has a zero in it.  Write that to disp->disabled\r
-        * and call into _handle_timer */\r
-       aqw_add void, a2, OFFSETOF_DISP_DISABLED\r
-       ld      a1, zero\r
-       ld      a2, HANDLE_TIMER_HOW_EXECUTE\r
-       long_call _handle_timer\r
-       /* should not return */\r
-       j7      BEE_J7_BREAKPOINT\r
-\r
-/* End */\r
diff --git a/kernel/arch/beehive/core1.S b/kernel/arch/beehive/core1.S
deleted file mode 100644 (file)
index dace5d5..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * \file
- * \brief Bootstrap the kernel.
- */
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#ifndef __ASSEMBLER__
-#define __ASSEMBLER__   1
-#endif
-
-#include <regconvention.h>
-#include <asmoffsets.h>
-
-stack = 0x4000
-
-// ------------------------------------------------------------
-
-       .code
-
-       .globl main /* bsim requires that this be called main */
-       .globl __code_ibefore
-__code_ibefore:
-main:  j       .+8             /* must be +8 for correct magic number */
-btorg: .word   0
-btsize:        .word   0
-bdorg: .word   0
-bdsize:        .word   0
-bborg: .word   0
-bbsize:        .word   0
-bcksum:        .word   0
-after: orn     r0, r0, r0
-       or      r1, r0, r0
-       jnz     badv1
-       
-vok:
-       sub     r2, pc, 11      /* r2 points at cs:main */
-       add_lsl r3, r2, zero, 2 /* r3 points at ds:main */
-       aqr_add vb, r3, 4       /* read btorg */
-       ld      r4, rq
-       sub     r5, r4, r2
-       jnz     badhdr
-
-       /* now we can assume we are running at the address we were
-        * linked for. XXX data and bss layout ??? */
-       ld      t1, r3
-       aqr_add vb, r3, 20
-       aqr_add vb, r3, 24
-       sub     r3, rq, r2      /* r3 has (word) bborg - btorg*/
-       add     r3, rq, r3      /* r3 has (word) bborg + bbsize - btorg */
-       add     r4, zero, zero  /* r4 is checksum */
-       sub     r2, t1, 4       /* loop incs r2 first before load */
-cklp:                          /* r2 is data pointer, r3 is size in words */
-       aqr_add r2, r2, 4
-       add     r4, rq, r4
-       sub     r3, r3, 1
-       jnz     cklp
-       rol     r5, r4, 1
-       xorn    vb, r4, r5
-       jnz     badck
-
-ckok:  
-       long_ld sp, stack
-       long_call _bmain
-       j __end_simulation
-
-
-badv1: andn    t2, t2, t2
-       add     r1, t2, "v"
-       add     t2, t2, "1"
-       j       dieloop
-
-badhdr:        simctrl 4
-       andn    t2, t2, t2
-       add     r1, t2, "h"
-       add     r2, t2, "d"
-       j       dieloop
-
-badck: simctrl 4
-       andn    t2, t2, t2
-       add     r1, t2, "c"
-       add     r2, t2, "k"
-       j       dieloop
-
-       /* r1 with char 1, r2 with char 2 */
-dieloop:andn   t2, t2, t2
-T1:    aqr_add t3, t2, 0x02
-       add     t3, rq, t2
-       and     t3, t3, 0x200
-       sub     t3, t3, 0
-       jz      T1
-       aqw_add t3, t2, 0x02
-       add     wq, r1, 0x200 /* r1 + go*/
-T2:    aqr_add t3, t2, 0x02
-       add     t3, rq, t2
-       and     t3, t3, 0x200
-       sub     t3, t3, 0
-       jz      T2
-       aqw_add t3, t2, 0x02
-       add     wq, r2, 0x200 /* r2 + go */
-       simctrl 1
-       j       T1
-
-               
-       .globl __end_simulation
-__end_simulation:
-       simctrl 1
-       j __end_simulation
diff --git a/kernel/arch/beehive/dcache.S b/kernel/arch/beehive/dcache.S
deleted file mode 100644 (file)
index 343bfbf..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#include <regconvention.h>\r
-\r
-#if 0 /* inline in dcache.h */\r
-       .code\r
-       .globl _bee_dcache_flush_all\r
-_bee_dcache_flush_all:\r
-       ld      t1,link\r
-       aqw_long_ld vb,0x8001fc03 ROL 2\r
-       j       t1\r
-#endif\r
-\r
-       .globl _bee_dcache_empty_all\r
-_bee_dcache_empty_all:\r
-       ld      t1,link\r
-       /* must avoid context switch between flush and invalidate */\r
-       ld      wq, zero\r
-       aqw_long_ld vb,0x8001fc03 ROL 2\r
-       aqw_long_ld vb,0x8003fc03 ROL 2\r
-       aqw_sub vb, sp, 4\r
-       j       t1\r
-\r
-#ifndef IN_KERNEL\r
-       .globl _bee_dcache_flush_lines\r
-_bee_dcache_flush_lines:\r
-       lsl     a2, a2, 7\r
-       add_lsl a1, a2, a1, 5\r
-       aqw_add a1, a1, 0x0E\r
-       j       link\r
-\r
-       .globl _bee_dcache_empty_lines\r
-_bee_dcache_empty_lines:\r
-       lsl     a2, a2, 7\r
-       add_lsl a1, a2, a1, 5\r
-       /* must avoid context switch between flush and invalidate */\r
-       ld      wq, zero\r
-       aqw_add a1, a1, 0x0E\r
-       lsl     t1, 1, 19 /* invalidate ends up in AQ[17] */\r
-       aqw_add t1, a1, t1\r
-       aqw_sub vb, sp, 4\r
-       j       link\r
-#endif\r
diff --git a/kernel/arch/beehive/exec.c b/kernel/arch/beehive/exec.c
deleted file mode 100644 (file)
index 01917ad..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- * \file
- * \brief x86-64 execution and miscellany
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <gdb_stub.h>
-#include <exec.h>
-#include <stdio.h> // printf
-#include <dispatch.h>
-#include <barrelfish_kpi/registers_arch.h> // NUM_REGS
-#include <trace/trace.h>
-#include <simctrl.h>
-#include <corearea.h>
-#include <trace/trace.h>
-
-#include "beekernel.h"
-#include "bmp.h"
-
-/**
- * \brief Triggers a debugger breakpoint.
- */
-void breakpoint(void)
-{
-    gdb_stub_entry(5/*???*/, "breakpoint"); 
-}
-
-void halt(void)
-{
-    panic("halt: called");
-}
-
-void reboot(void)
-{
-    panic("reboot: called");
-}
-
-/*
- * On beehive we have SAS, so just check that this is null
- */
-extern void paging_context_switch(void* ptbase);
-void paging_context_switch(void* ptbase)
-{
-    assert(ptbase == (void*)0xBAD23200);
-}
-
-
-extern void __attribute__ ((noreturn)) _resume(union registers_beehive *regs);
-
-extern void __attribute__ ((noreturn)) _execute(uint32_t entry, struct dispatcher_shared_generic *disp);
-
-
-// XXX See kernel/arch/include/misc.h code for arch_set_thread_register
-uintptr_t x86_fs_compatability_register;
-
-/**
- * \brief Go to user-space at entry point 'entry'.
- *
- * This function goes to user-space and starts executing the program at
- * its entry point at virtual address 'entry'.
- *
- * \param entry Entry point address of program to execute.
- */
-
-void __attribute__ ((noreturn)) execute(lvaddr_t entry)
-{
-    if (entry == 0)
-       panic("execute: jumping at 0!\n\n");
-
-    struct dispatcher_shared_generic *disp = (void*)x86_fs_compatability_register;
-    if (disp == NULL)
-       panic("execute: disp == NULL");
-
-    _execute(entry, disp);
-}
-
-/**
- * \brief Resume the given user-space snapshot.
- *
- * This function resumes user-space execution by restoring the CPU
- * registers with the ones given in the array, pointed to by 'regs'.
- */
-void __attribute__ ((noreturn)) resume(arch_registers_state_t *state)
-{
-    if (((uintptr_t)state & (sizeof(uintptr_t) -1)) != 0)
-       panic("execute: state=%p\n", state);
-
-    if (state->named.count > 64)
-       panic("resume: invalid rq count (%u) indicated\n", state->named.count);
-    if (state->named.pc == 0)
-       panic("resume: jumping at 0!\n\n");
-    if (state->named.p1 == 0) {
-       if (x86_fs_compatability_register == 0)
-           panic("resume: no p1\n");
-       else {
-           printf("fixing up missing thread register from x86 segment register\n");
-           state->named.p1 = x86_fs_compatability_register;
-       }
-    }
-    _resume(state);
-}
-
-/**
- * \brief Halt processor until an interrupt arrives
- *
- * For use in the idle loop when nothing is runnable.
- */
-void __attribute__ ((noreturn)) wait_for_interrupt(void)
-{
-#ifdef TRACE_CSWITCH
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_CSWITCH, 0);
-#endif
-    //int core = arch_get_core_id();
-    //printf("Core %d yields\n", core);
-    struct corearea *corearea = my_corearea();
-    for(;;) {
-       bmp_pump_until_timer(corearea);
-       if (corearea->kernel_pending) {
-           printf("wfi: pending %u\n", corearea->kernel_pending);
-           /* XXX RACE */
-           kernel_now += corearea->kernel_pending;
-           corearea->kernel_pending = 0;
-           /* XXX END RACE */
-       }
-       struct dcb *next = schedule();
-       if (next != NULL) {
-           //printf("Core %d dispatches %p\n", core, next);
-           dispatch(next);
-       } else {
-           printf("Core %d still had nothing to do!\n", arch_get_core_id());
-       }
-    }
-}
-
-
-void __attribute__((noreturn)) handle_timer(
-    union registers_beehive *saved, int how);
-
-/* If the how indicates EXECUTE then the saved pointer is NULL */
-
-void __attribute__((noreturn)) handle_timer(
-    union registers_beehive *saved, int how)
-{
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_TIMER, kernel_now);
-
-    struct corearea *corearea = my_corearea();
-    struct dcb *dcb = dcb_current;
-
-    assert(dcb != NULL);
-
-    struct dispatcher_shared_beehive *disp;
-
-    disp = get_dispatcher_shared_beehive(dcb_current->disp);
-    assert(dcb->disabled == disp->d.disabled);
-    if (how == HANDLE_TIMER_HOW_EXECUTE) {
-       assert(saved == NULL);
-       printf("handle_timer: core %u \"%.*s\" (%p,%p) at activation\n",
-              arch_get_core_id(),
-              DISP_NAME_LEN, disp->d.name, dcb, disp);
-    } else {
-       assert(saved == (dcb->disabled ? &disp->disabled_save_area : &disp->enabled_save_area));
-       printf("handle_timer: core %u \"%.*s\" (%p,%p) at %#x %s how %u\n",
-              arch_get_core_id(),
-              DISP_NAME_LEN, disp->d.name, dcb, disp, saved->named.pc,
-              (dcb->disabled ? "disabled" : "enabled"), how);
-    }
-
-    if (corearea->kernel_pending > (how == HANDLE_TIMER_HOW_SYNC ? 0 : 1))
-       printf("handle_timer: core %u *** pending = %u\n",
-              arch_get_core_id(), corearea->kernel_pending);
-
-    /* XXX RACE */
-    kernel_now += corearea->kernel_pending + (how == HANDLE_TIMER_HOW_SYNC ? 1 : 0);
-    corearea->kernel_pending = 0;
-    /* XXX END RACE */
-
-    dispatch(schedule());
-    panic("dispatch() returned");
-}
diff --git a/kernel/arch/beehive/findbits.S b/kernel/arch/beehive/findbits.S
deleted file mode 100644 (file)
index 73d74ed..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*\r
- * Copyright (c) 2010 ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#ifndef __ASSEMBLER__\r
-#define __ASSEMBLER__   1\r
-#endif\r
-\r
-#include <regconvention.h>\r
-\r
-// ------------------------------------------------------------\r
-\r
-       .code\r
-\r
-       .globl  _find_least_clear32\r
-       .globl  _find_least_set32\r
-_find_least_clear32:\r
-       xorn    a1, a1, zero\r
-_find_least_set32:\r
-       ld      r1, 0\r
-       ld      void, a1\r
-flsjoin:jz     minusone\r
-       lsl     void, a1, 16\r
-       jnz     .+3\r
-       lsr     a1, a1, 16\r
-       add     r1, r1, 16\r
-       and     void, a1, 0xff\r
-       jnz     .+3\r
-       lsr     a1, a1, 8\r
-       add     r1, r1, 8\r
-       and     void, a1, 0x0f\r
-       jnz     .+3\r
-       lsr     a1, a1, 4\r
-       add     r1, r1, 4\r
-       and     void, a1, 0x03\r
-       jnz     .+3\r
-       lsr     a1, a1, 2\r
-       add     r1, r1, 2\r
-       and     void, a1, 0x01\r
-       jnz     link\r
-       add     r1, r1, 1\r
-       j       link\r
-minusone:\r
-       xorn    r1, zero, zero\r
-       j       link\r
-\r
-       .globl  _find_least_clear64\r
-       .globl  _find_least_set64\r
-_find_least_clear64:\r
-       xorn    a1, a1, zero\r
-       xorn    a2, a2, zero\r
-_find_least_set64:\r
-       ld      void, a1\r
-       jnz     _find_least_set32\r
-       ld      r1, 32\r
-       ld      a1, a2\r
-       j       flsjoin\r
-               \r
-\r
-       .globl  _find_highest_clear32\r
-       .globl  _find_highest_set32\r
-_find_highest_clear32:\r
-       xorn    a1, a1, zero\r
-_find_highest_set32:\r
-       ld      r1, 31\r
-       ld      void, a1\r
-fhsjoin:jz     minusone\r
-       lsr     void, a1, 16\r
-       jnz     .+3\r
-       sub     r1, r1, 16\r
-       lsl     a1, a1, 16\r
-       lsr     void, a1, 24\r
-       jnz     .+3\r
-       sub     r1, r1, 8\r
-       lsl     a1, a1, 8\r
-       lsr     void, a1, 28\r
-       jnz     .+3\r
-       sub     r1, r1, 4\r
-       lsl     a1, a1, 4\r
-       lsr     void, a1, 30\r
-       jnz     .+3\r
-       sub     r1, r1, 2\r
-       lsl     a1, a1, 2\r
-       lsr     a1, a1, 31\r
-       jnz     link\r
-       sub     r1, r1, 1\r
-       j       link\r
-\r
-\r
-       .globl  _find_highest_clear64\r
-       .globl  _find_highest_set64\r
-_find_highest_clear64:\r
-       xorn    a1, a1, zero\r
-       xorn    a2, a2, zero\r
-_find_highest_set64:\r
-       ld      void, a2\r
-       jz      _find_highest_set32\r
-       ld      a1, a2\r
-       ld      r1, 63\r
-       j       fhsjoin\r
-\r
-\r
-       .globl  _population_count\r
-_population_count:\r
-       ld      r1, 0\r
-       ld      void, a1\r
-       jz      link\r
-       add     r1, r1, 1\r
-       sub     t1, a1, 1\r
-       and     a1, a1, t1\r
-       j       .-4\r
diff --git a/kernel/arch/beehive/gdb_arch.c b/kernel/arch/beehive/gdb_arch.c
deleted file mode 100644 (file)
index 449c7a4..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/** \file
- * \brief x86-specific parts of in-kernel GDB stub.
- *
- * This file implements x86 architecture support for the kernel-side GDB stubs.
- */
-
-/*
- * Copyright (c) 2007, 2008, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <stdio.h>
-#include <paging_kernel_arch.h>
-#include <gdb_stub.h>
-
-#ifndef ARCH_NUMREGS
-#define ARCH_NUMREGS NUM_REGS
-#endif
-
-/** \brief GDB register save area / frame.
- *
- * Stores pointer to current save frame used by GDB. Used to read/modify
- * register contents, and reloaded when program execution resumes. */
-union registers_beehive *gdb_arch_registers;
-
-
-#if 0
-/** \brief Separate stack area for the stub to run on */
-static uintptr_t gdb_stack[KERNEL_STACK_SIZE/sizeof(uintptr_t)];
-/** \brief Pointer to top of GDB stack area. */
-uintptr_t * SNT gdb_stack_top = &gdb_stack[KERNEL_STACK_SIZE/sizeof(uintptr_t)];
-#endif
-
-#if 0
-/** \brief Converts exception vector to signal number.
- *
- * This function takes an x86 exception vector and attempts to
- * translate this number into a Unix-compatible signal value.
- */
-static int exception_to_signal(int vector)
-{
-    switch (vector) {
-        case 0:     return 8;   // divide by zero
-        case 1:     return 5;   // debug exception
-        case 3:     return 5;   // breakpoint
-        case 4:     return 16;  // into instruction (overflow)
-        case 5:     return 16;  // bound instruction
-        case 6:     return 4;   // Invalid opcode
-        case 7:     return 8;   // coprocessor not available
-        case 8:     return 7;   // double fault
-        case 9:     return 11;  // coprocessor segment overrun
-        case 10:    return 11;  // Invalid TSS
-        case 11:    return 11;  // Segment not present
-        case 12:    return 11;  // stack exception
-        case 13:    return 11;  // general protection
-        case 14:    return 11;  // page fault
-        case 16:    return 7;   // coprocessor error
-        default:    return 7;   // "software generated"
-    }
-}
-#endif
-
-#if 0
-/** \brief Entry point for an exception; we are now on our own stack.
- *
- * This function sets up the GDB-format register save frame, constructs the
- * initial message to the remote GDB and calls into the generic debugger entry
- * point.
- */
-void gdb_handle_exception_onstack(int vector, uintptr_t * NONNULL
-        COUNT(NUM_REGS) save_area) __attribute__((noreturn));
-void gdb_handle_exception_onstack(int vector, uintptr_t * NONNULL
-        COUNT(NUM_REGS) save_area)
-{
-}
-#endif
-
-/** \brief Get the value of a single register in the frame.
- * \param regnum register number (as defined by the #gdb_register_nums enum)
- * \param value pointer to location in which to return current value
- * \return Zero on success, nonzero on failure (invalid regnum).
- */
-int gdb_arch_get_register(int regnum, uintptr_t *value)
-{
-    if (regnum < 0 || regnum >= (sizeof(union registers_beehive) / sizeof(uint32_t))) {
-        return -1;
-    }
-
-    *value = gdb_arch_registers->regs[regnum];
-    return 0;
-}
-
-/** \brief Set the value of a single register in the frame.
- * \param regnum register number (as defined by the #gdb_register_nums enum)
- * \param value new value
- * \return Zero on success, nonzero on failure (invalid regnum).
- */
-int gdb_arch_set_register(int regnum, uintptr_t value)
-{
-    if (regnum < 0 || regnum >= (sizeof(union registers_beehive) / sizeof(uint32_t))) {
-        return -1;
-    }
-
-    gdb_arch_registers->regs[regnum] = value;
-    return 0;
-}
-
-/** \brief Resume execution.
- *
- * Resumes execution with the CPU state stored in the #gdb_arch_registers frame.
- */
-void gdb_resume(void) __attribute__((noreturn));
-
-void gdb_resume(void)
-{
-    panic("gdb_resume: called");
-}
-
-/** \brief Resume program execution.
- * \param addr Address to resume at, or 0 to continue at last address.
- */
-void gdb_arch_continue(lvaddr_t addr)
-{
-    if (addr != 0) {
-       gdb_arch_registers->named.pc = addr;
-    }
-
-    gdb_resume(); /* doesn't return */
-}
-
-/** \brief Single-step program execution.
- * \param addr Address to resume at, or 0 to continue at last address.
- */
-void gdb_arch_single_step(lvaddr_t addr)
-{
-    if (addr != 0) {
-       gdb_arch_registers->named.pc = addr;
-    }
-    panic("cant implement");
-
-    /* set the trace bit for single-step */
-    //gdb_arch_registers[EFLAGS_REG] |= 0x100; // XXX
-
-    gdb_resume(); /* doesn't return */
-}
-
-/** \brief Ensures that the page containing addr is mapped.
- * \return Zero on success, negative on failure.
- */
-static int ensure_mapping(lvaddr_t addr)
-{
-#if FALSE
-    static paddr_t lastaddr;
-
-    /* check if address is in kernel image */
-    if (addr >= KERNEL_OFFSET && addr < (vaddr_t)&_end_kernel) {
-        return 0;
-    }
-
-    /* if address is outside "physical" memory region, fail the access */
-    if (addr < MEMORY_OFFSET || addr >= KERNEL_OFFSET) {
-        return -1;
-    }
-
-    /* we now know we have a valid "physical memory" region address */
-    paddr_t paddr = mem_to_phys(addr);
-    paddr -= paddr & MEM_PAGE_MASK; // page-align
-
-    /* quick and dirty optimisation: if this address is on the same page as
-     * the last time we were called, return immediately */
-    if (lastaddr == paddr && lastaddr != 0) {
-        return 0;
-    }
-
-    int r = paging_map_memory(paddr, MEM_PAGE_SIZE);
-    if (r < 0) {
-        return r;
-    }
-
-    lastaddr = paddr;
-#endif /* FALSE */
-    return 0;
-}
-
-/** \brief Writes a byte to an arbitrary address in kernel memory.
- * \return Zero on success, nonzero on error (invalid address)
- */
-int gdb_arch_write_byte(uint8_t *addr, uint8_t val)
-{
-    int r = ensure_mapping((lvaddr_t)addr);
-    if (r < 0) {
-        return r;
-    }
-
-    *addr = val;
-    return 0;
-}
-
-/** \brief Reads a byte from an arbitrary address in kernel memory.
- * \return Zero on success, nonzero on error (invalid address)
- */
-int gdb_arch_read_byte(uint8_t *addr, uint8_t *val)
-{
-    int r = ensure_mapping((lvaddr_t)addr);
-    if (r < 0) {
-        return r;
-    }
-
-    *val = *addr;
-    return 0;
-}
diff --git a/kernel/arch/beehive/hyper.c b/kernel/arch/beehive/hyper.c
deleted file mode 100644 (file)
index a27f519..0000000
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-/* 
- * Core 1 runs a small 'hypervisor' which acts as a timer device, 
- * serial device and interrupt controller. 
- *
- * It interacts with other cores via DEBUG messages.  
- *
- */
-
-#include <stdarg.h>
-#include <kernel.h>
-#include <hyper.h>
-#include <serial.h>
-#include <bexec.h>
-#include <simctrl.h>
-#include <corearea.h>
-#include <dcache.h>
-#include <stopcode.h>
-
-
-#if 0
-#define HYPERDBG(x) serial_console_putchar(x)
-#else
-#define HYPERDBG(x) (void)sizeof(x)
-#endif
-
-#define ROUNDUP(x,y) (((x)+(y)-1) & ~((y)-1))
-#define BASE_PAGE_SIZE 0x1000
-
-
-static void halt(void) __attribute__((noreturn));
-static void serial_dec_word(uint32_t word);
-static void serial_hex_word(uint32_t word);
-
-void bmain(uint32_t a, uint32_t b, uint32_t c, 
-          uint32_t d, uint32_t e, uint32_t f)
-    __attribute__((noreturn));
-
-#define HYPERFAIL(format, ...) hyperfail(__LINE__, format, ## __VA_ARGS__)
-
-/*
- * Stop the system if running in the simulator
- */
-static void halt(void)
-{
-    for(;;)
-       BEE_SIMCTRL(BEE_SIMCTRL_TERMINATE);
-}
-
-/*
- * Do a register dump if running in the simulator
- */
-static inline void dumpregs(void)
-{
-    BEE_SIMCTRL(BEE_SIMCTRL_REGISTERS);
-}
-
-/*
- * Read the ID register to get the core number 
- */
-static inline uint8_t arch_get_core_id(void)
-{
-    volatile unsigned int *ptr = (void*)0x02;
-    unsigned int val = *ptr;
-    return (val >> 10) & 0xf;
-}
-
-static inline uint8_t arch_get_max_core_id(void)
-{
-    volatile unsigned int *ptr = (void*)0x02;
-    unsigned int val = *ptr;
-    return (val >> 14) & 0xf;
-}
-
-
-static inline unsigned int cyclecounter(void)
-{
-    return *(volatile unsigned int *)(0x22);
-}
-
-
-/*
- * Hardware messages are up to 63 32-bit words
- */
-typedef unsigned int msg_t[63];
-
-/*
- * Send a message to core number "dest", using "len" words at "buf".
- *
- * Note that message lengths are measured in words, not bytes.
- */
-void message_send(unsigned int dest, unsigned int type,
-                 msg_t *buf, unsigned int len);
-
-/*
- * If there's a message available to receive, place its details and
- * contents in (srce, type, buf) and return its length.
- * Otherwise return 0.
- */
-unsigned int message_recv(unsigned int *srce, unsigned int *type,
-                         msg_t * buf);
-
-
-extern int lockunit_read(int n);
-extern void lockunit_write(int n);
-
-
-int hyperfail(int line, const char *fmt, ...) __attribute__ ((format(printf, 2, 3)))
-    __attribute__((noreturn));
-
-int vprintf(const char *fmt, va_list ap)
-{
-    int percent = 0;
-    int ch;
-    while ((ch = *fmt++) != 0) {
-       if (percent) {
-           if (ch == 'x' || ch == 'X' || ch == 'p')
-               serial_hex_word(va_arg(ap, unsigned));
-           else if (ch == '%')
-               serial_console_putchar('%');
-           else if (ch == 'c')
-               serial_console_putchar(va_arg(ap, int));
-           else
-               serial_dec_word(va_arg(ap, unsigned));
-           percent = 0;
-       }
-       else if (ch == '%')
-           percent = 1;
-       else if (ch == '\n') {
-           serial_console_putchar('\r');
-           serial_console_putchar(ch);
-       }
-       else
-           serial_console_putchar(ch);
-    }
-    va_end(ap);
-    return 0;
-}
-
-int printf(const char *fmt, ...)
-{
-    int result;
-    va_list ap;
-    va_start(ap, fmt);
-    result = vprintf(fmt, ap);
-    va_end(ap);
-    return result;
-}
-
-int hyperfail(int line, const char *fmt, ...)
-{
-    va_list ap;
-    printf("\nhypervisor failure at line %d\n", line);
-    va_start(ap, fmt);
-    vprintf(fmt, ap);
-    va_end(ap);
-    printf("\n");
-    halt();
-}
-
-/// Different handler for cap operations performed by the monitor
-static errval_t arch_spawn_core(coreid_t core_id, genvaddr_t entry)
-{
-    // Setup registers in save area
-    struct corearea *savearea = COREAREA_FOR_CORE(core_id);
-
-    for (unsigned i = 1; i < 32; i++) {
-        savearea->regs[i] = 0xBAD000 | i;
-    }
-    // Count
-    savearea->regs[0]  = 0;
-
-    // Arg Registers
-    savearea->regs[3]  = 0xA1;
-    savearea->regs[4]  = 0xA2;
-    savearea->regs[5]  = 0xA3; 
-    savearea->regs[6]  = 0xA4;
-    savearea->regs[7]  = 0xA5;
-    savearea->regs[8]  = 0xA6;
-
-    // SavedLink
-    savearea->regs[30] = 0xBAD;
-    // SavedPC
-    savearea->regs[31] = entry;
-
-    // Mark kernel covering whole memory so timer interrupts are deferred
-    savearea->kernel_begins = 0;
-    savearea->kernel_ends = 0x7fffffff;
-
-    //bee_dcache_flush_all();
-    bee_dcache_empty_all();
-   //bee_dcache_flush_rgn(savearea, 512);
-
-    // Send a START message
-    HYPERDBG('>');
-    message_send(core_id, 0, NULL, 0);
-
-    return SYS_ERR_OK;
-}
-
-static void serial_hex_nibble(uint32_t nibble);
-static void serial_hex_nibble(uint32_t nibble)
-{
-    nibble &= 0xf;
-    if (nibble > 9) 
-       nibble += '@' - '0';
-    serial_console_putchar(nibble + '0');
-}
-       
-static void serial_hex_word(uint32_t word)
-{
-    serial_console_putchar('0');
-    serial_console_putchar('x');
-    serial_hex_nibble((word>>28));
-    serial_hex_nibble((word>>24));
-    serial_hex_nibble((word>>20));
-    serial_hex_nibble((word>>16));
-    serial_hex_nibble((word>>12));
-    serial_hex_nibble((word>>8));
-    serial_hex_nibble((word>>4));
-    serial_hex_nibble((word));
-}
-
-static void serial_dec_word(uint32_t word)
-{
-    if (word > 9) {
-       uint32_t tens = word / 10;
-       word = word - (10 * tens);
-       serial_dec_word(tens);
-    }
-    serial_console_putchar('0'+word);
-}
-
-/* Reads a single character from the default serial port.
- * Returns -1 if there isnt one without delaying
- */
-static int serial_poll_getchar(void)
-{
-    // The RS232 is in IO position 0, register 0 XXX Should have a
-    // MACRO in an arch header file to build these type of constants
-    volatile int *const rs232 = (int *)0x02;
-
-    int reg = *rs232;
-    if ((reg & 0x100) == 0)
-       return -1;
-    // Indicate that we noticed it
-    *rs232 = 0x100;
-    return (reg & 0xff);
-}
-
-
-
-static inline int arch_is_simulator(void)
-{
-    volatile unsigned int *ptr = (void*)0x02;
-    unsigned int val = *ptr;
-
-    printf("identity=%x\n", val);
-
-    val >>= 18;
-    val &= 0x7f;
-    return val == 2 ? 1 : 0;
-}
-
-/**
- * \brief Expect a break message from all cores and panic if not
- *
- */
-static inline void expect_breaks(uint32_t pc, unsigned wait);
-static inline void expect_breaks(uint32_t pc, unsigned wait)
-{
-    int expectbreak[16];
-    for (unsigned i = 0; i < 16; i++)
-       expectbreak[i] = 0;
-    int ncores = arch_get_max_core_id();
-    for(unsigned i=2; i<ncores; i++)
-       expectbreak[i] = 1;
-    
-    msg_t msg; 
-    unsigned int srce = 0;
-    unsigned int type = 0;
-    unsigned int len;
-    if (wait != 0)
-       wait = ncores - 2;
-    while ((len = message_recv(&srce, &type, &msg)) != 0 || (wait != 0)) {
-       serial_console_putchar('0'+len);
-       serial_console_putchar('A'+wait);
-       if (len == 1 && type == 1 && expectbreak[srce] == 1 && msg[0] == pc) {
-           expectbreak[srce] = 0;
-           if (wait > 0)
-               wait--;
-       }
-       else if (len != 0)
-           HYPERFAIL("not break len=%d srce=%d type=%d", len, srce, type);
-    }
-    for(unsigned i=2; i<ncores; i++)
-       if (expectbreak[i] != 0)
-           HYPERFAIL("no expected break core %d", i);
-} // expect_breaks
-
-
-#define STEP(_s) \
-    serial_console_putchar('0'+(_s))
-
-void change_slaves(void);
-void change_slaves(void)
-{
-    const uint32_t jplus8 = 0xf800220c;
-    const uint32_t jlink = 0xf000030c;
-    const uint32_t nop = 0x000000c5;
-    uint32_t *const iflushDataAddr = (uint32_t *)0x7ffff000;
-    
-    printf("change_slaves: ");
-    STEP(0);
-    // Step 0: new slaves dont build cache flush table so just
-    // in case our new slave is already installed in hardware
-    // we must build the cache flush table before we poke them
-    for(int i=0; i<1024-8; i+=8)
-       iflushDataAddr[i] = jplus8;
-    iflushDataAddr[1024-8] = jlink;
-    
-    iflushDataAddr[1024-7] = nop;
-    iflushDataAddr[1024-6] = nop;
-    iflushDataAddr[1024-5] = jlink;
-    bee_dcache_flush_all();
-
-    STEP(1);
-    // Step 1: set the resume context for all cores to execute
-    // the iflush code and then return to the return (loops)
-    unsigned ncores = arch_get_max_core_id();
-    for(unsigned i=2; i < ncores; i++) {
-       struct corearea *corearea = COREAREA_FOR_CORE(i);
-       corearea->regs[0] = 0;
-       corearea->regs[30] = ((uint32_t)(iflushDataAddr+1024-7)) >> 2;
-       corearea->regs[31] = ((uint32_t)iflushDataAddr) >> 2;
-    }
-    bee_dcache_flush_all();
-
-    STEP(2);
-    // Step 2: cause the old slaves to start running the
-    // cache flush and then loop
-    for(unsigned i=2; i<ncores; i++) {
-       message_send(i, 0, NULL, 0);
-    }
-
-    STEP(3);
-    // Step 3: wait long enough that they must have finished iflush
-    // and are now looping.  They have to notice the start; load
-    // context execute the iflush, finish loading the context and then
-    // execute the iflush all over again (the second one we expect to
-    // be mostly cached).  This should be shorter than the time it takes
-    // us to read the same memory three times (with *empty* in between)
-    for(unsigned i=0; i<3; i++) {
-       bee_dcache_empty_all();
-       for (unsigned j=0; j<1024; j++)
-           ((volatile uint32_t *)iflushDataAddr)[j];
-    }
-    
-    STEP(4);
-    // Step 4: copy the new slave into place
-    // and zero all the core areas. except tell the new slave that we
-    // expect it to stop.
-    extern void slaveStart(void);
-    extern void slaveAfter(void);
-    uint32_t *from = (uint32_t*)(((uint32_t)slaveStart) << 2);
-    uint32_t *to = (uint32_t*)0;
-    uint32_t count = slaveAfter - slaveStart;
-    while(count--)
-       *to++ = *from++;
-
-    for(int i=2; i<ncores; i++) {
-       struct corearea *corearea = COREAREA_FOR_CORE(i);
-       for(unsigned j=0; j<sizeof(*corearea)/sizeof(uint32_t); j++)
-           ((uint32_t*)corearea)[j] = 0;
-       corearea->master_stops = 1;
-    }
-    bee_dcache_flush_all();
-
-    STEP(5);
-    // Step 5: send the cores a stop
-    // TODO: XXX use the signal word to explain to them...
-    for (unsigned i=2; i<ncores; i++) {
-       message_send(i, 1, NULL, 0);
-    }
-
-    // Step 6: Wait for them to sync
-    STEP(6);
-    expect_breaks(STOPCODE_STOP, 1);
-    printf("done\n");
-} // change_slaves
-
-
-static inline void backtrace(uintptr_t fp)
-{
-    int i=0;
-    printf("Backtrace follows:\n");
-    printf("   ---Frame-- -Address-\n");
-    while ((fp != 0) && ((fp & (sizeof(fp)-1)) == 0)) {
-       printf("%d %x %x\n", i, fp, ((uintptr_t *)fp)[1]);
-       fp = *(uintptr_t *)fp;
-       i++;
-    }
-    printf("%d %x\n", i, fp);
-}
-
-#define CORESTATE_STOPPED        1
-#define CORESTATE_STOP_SENT      2
-#define CORESTATE_RUN_SENT       4
-#define CORESTATE_SEND_STOP      8
-#define CORESTATE_SEND_KILL      16
-#define CORESTATE_EXPECT_BREAKPOINT 32
-
-int two = 2; // Strange but true; needed to avoid a compiler bug
-
-void bmain(uint32_t a, uint32_t b, uint32_t c, uint32_t d, uint32_t e, uint32_t f)
-{
-    uint8_t core;
-
-    int corestate[16];
-    int expectstoptype[16];
-
-    HYPERDBG('*');
-
-    core = arch_get_core_id();
-
-    if (core != 1) {
-       HYPERFAIL("core=%d", core);
-    }
-
-    int simulator = arch_is_simulator();
-
-    extern void _data_iafter(void);
-    uintptr_t codelast = (uintptr_t)&_data_iafter;
-
-    bexec_t *bexec = (bexec_t*)ROUNDUP(codelast<<2, BASE_PAGE_SIZE);
-
-
-    if ((uintptr_t)bexec  != 0x2000<<2) {
-       HYPERFAIL("bexec=%p", bexec);
-    }
-    if (bexec->bmagic != BEXEC_BMAGIC) {
-       HYPERFAIL("bmagic=%x", bexec->bmagic);
-    }
-
-#if 0
-    // Print the debug stub code for checking
-    if (!simulator) {
-       printf("Debug stub:\n");
-       for (int i = 0; i < 0x300; i+=4) {
-           serial_hex_word(*(unsigned *)i);
-           serial_console_putchar('\r');
-           serial_console_putchar('\n');
-       }
-    }
-#endif
-
-    for (int i = 0; i < 16; i++)
-       corestate[i] = expectstoptype[i] = 0;
-
-    if (simulator) {
-       // The other cores should have run the slave code which should
-       // give initial power-on breakpoint.
-       expect_breaks(0, 0);
-    }
-
-    change_slaves();
-
-    // Start first real kernel on core 2 (XXX hardwired address for now!)
-    arch_spawn_core(2, 0x2000);
-
-    unsigned int alarmdelta = (simulator ? 20*1000*1000 : 100*1000*1000);
-    unsigned int alarm = cyclecounter() + alarmdelta;
-    unsigned ncores = arch_get_max_core_id();
-
-    corestate[2] = CORESTATE_RUN_SENT;
-    for(unsigned i=3; i<ncores; i++)
-       corestate[i] = CORESTATE_STOPPED;
-
-    printf("hyper: alarm=%d\n", alarm);
-
-    // Handle messages forever
-    while (1) {
-        msg_t msg; 
-        unsigned int srce = 0;
-        unsigned int type = 0;
-        unsigned int len;
-
-       do {
-           int ch = serial_poll_getchar();
-           if (ch != -1) {
-               printf("hyper: ch=%c\n", ch);
-           }
-           if (ch == 'K' || ch == 'k' || ch == 'S' || ch =='s') { // Stop or Kill
-               // Send breaks to all cores
-               for (unsigned i=2; i<ncores; i++) {
-                   struct corearea *corearea = COREAREA_FOR_CORE(i);
-                   corearea->master_stops++;
-               }
-               bee_dcache_flush_all();
-               for (unsigned i=2; i<ncores; i++) {
-                   message_send(i, ch == 'K' ? 2 : 1, NULL, 0);
-               }
-           }
-           unsigned int cycles = cyclecounter();
-           if (((int)(cycles - alarm)) > 0) {
-               // Send timer to all cores
-              //               printf("hyper: timer at %d\n", cycles);
-               for (unsigned i=2; i<ncores; i++) {
-                   struct corearea *corearea = COREAREA_FOR_CORE(i);
-                   if (corestate[i] == CORESTATE_RUN_SENT) {
-                       corearea->master_ticks++;
-                       corestate[i] = CORESTATE_SEND_STOP;
-                       expectstoptype[i] = STOPCODE_TIMER;
-                   } else if (corestate[i] == CORESTATE_STOP_SENT) {
-                       corearea->master_stops++;
-                       printf("hyper: %d not responding!\n", i);
-                       corestate[i] = CORESTATE_SEND_KILL;
-                       expectstoptype[i] = STOPCODE_STOP;
-                   } else if ((corestate[i] & CORESTATE_EXPECT_BREAKPOINT) != 0) {
-                   } else if (corestate[i] != CORESTATE_STOPPED)
-                       HYPERFAIL("corestate[%d]=%d", i, corestate[i]);
-               }
-               bee_dcache_flush_all(); // after decisions before sends
-               for (unsigned i=2; i<ncores; i++) {
-                   if (corestate[i] == CORESTATE_SEND_STOP) {
-                       message_send(i, 1, NULL, 0);
-                       corestate[i] = CORESTATE_STOP_SENT;
-                   } else if (corestate[i] == CORESTATE_SEND_KILL) {
-                       message_send(i, 2, NULL, 0);
-                       corestate[i] = CORESTATE_STOP_SENT;
-                   }
-               }
-               alarm = cyclecounter() + alarmdelta;
-                //             printf("hyper: alarm=%d\n", alarm);
-           }
-           //BEE_SIMCTRL(BEE_SIMCTRL_HALT);
-           len = message_recv(&srce, &type, &msg);
-       } while(len == 0);
-
-       HYPERDBG('<');
-       HYPERDBG('0'+srce);
-       HYPERDBG('T');
-       HYPERDBG('0'+type);
-       HYPERDBG('L');
-       HYPERDBG('0'+len);
-       
-       if (type == HYPER_MSG_TYPE) {
-           uint32_t opcode = msg[0];
-                
-           switch(opcode) {
-           case HYPER_START_CORE:
-               HYPERDBG('S');
-               HYPERDBG('0'+msg[1]);
-               HYPERDBG('>');
-               if (corestate[msg[1]] != CORESTATE_STOPPED)
-                   HYPERFAIL("start core %d state %d", msg[1], corestate[msg[1]]);
-               message_send(msg[1], 0, NULL, 0);
-               corestate[msg[1]] = CORESTATE_RUN_SENT;
-               break;
-
-           case HYPER_SERIAL_OUT:
-               if (1) {
-#if 0
-                   const char *hex = "0123456789ABCDEF";
-                   serial_console_putchar(hex[srce]);
-                   serial_console_putchar(':');
-#endif
-                   int outlen = msg[1];
-                   char *buf = (char*)&msg[2];
-                   // Synchronous output for now...
-                   while (outlen) {
-                       serial_console_putchar(*buf++);
-                       outlen--;
-                   }
-               }
-               // // XXX Core will breakpoint next ... 
-               // // restart once serial output is complete
-               //corestate[srce] |= CORESTATE_EXPECT_BREAKPOINT;
-               //expectstoptype[srce] = STOPCODE_BREAK;
-               // clear lock so core knows it can resume (or
-               // send next printf if printf if async)
-               lockunit_write(srce);
-               break;
-           default:
-               HYPERDBG('?');
-               break;
-           }
-       } else if (type == 1 && len == 1) {
-           // STOPACK TYPE:1 LEN:1 MSG[0]:STOPCODE
-           uint32_t stopcode = msg[0];
-           if (corestate[srce] == CORESTATE_STOP_SENT
-               && stopcode == STOPCODE_TIMER
-               && expectstoptype[srce] == STOPCODE_TIMER) {
-               // just get it running again asap
-              //               printf("hyper: timer ack %d\n", srce);
-               message_send(srce, 0, NULL, 0);
-               corestate[srce] = CORESTATE_RUN_SENT;
-           }
-           else if (stopcode == STOPCODE_BREAK
-                    && ((corestate[srce] & CORESTATE_EXPECT_BREAKPOINT) != 0)
-                    && expectstoptype[srce] == STOPCODE_BREAK) {
-               /* Restart the core: dont need to skip over breakpoint
-                * as that is now done in the slave */
-               //bee_dcache_empty_all();
-               //struct corearea *corearea = COREAREA_FOR_CORE(srce);
-               //corearea->regs[31]++;
-               //bee_dcache_empty_all();
-               message_send(srce, 0, NULL, 0);
-               corestate[srce] &= ~CORESTATE_EXPECT_BREAKPOINT;
-           }
-           else {
-               printf("hyper: Unexpected stop %d on core %d state %d expect %d\n",
-                      stopcode, srce, corestate[srce], expectstoptype[srce]);
-
-               // XXX should really be invalidate of savearea
-               bee_dcache_empty_all();
-
-               // Dump registers in save area
-               struct corearea *savearea = COREAREA_FOR_CORE(srce);
-
-               for (unsigned i = 0; i < 32; i++) {
-                   if ((i & 3) == 0) {
-                       if (i < 10) serial_console_putchar(' ');
-                       serial_dec_word(i);
-                   }
-                   serial_console_putchar(' ');
-                   serial_hex_word(savearea->regs[i]);
-                   if ((i & 3) == 3)
-                       printf("\n");
-               }
-               backtrace(savearea->regs[23]);
-
-               for (unsigned p = savearea->regs[31] - 8;
-                    p < savearea->regs[31] + 8;
-                    p++) {
-                   printf("word %x = %x\n", p, *((unsigned *)(p << 2)));
-               }
-
-               corestate[srce] = CORESTATE_STOPPED;
-
-               int allstopped = 1;
-               for(unsigned i=two; i<ncores; i++) {
-                   if (corestate[i] != CORESTATE_STOPPED) {
-                       allstopped = 0;
-                       break;
-                   }
-               }
-               if (allstopped)
-                   HYPERFAIL("all stopped");
-           }
-       } else {
-           printf("hyper: Unexpected type %x len %d: ", type, len);
-           for (unsigned i=0; i<len; i++) {
-               printf("%x\n", msg[i]);
-           }
-       }
-    } // while(1)
-}
diff --git a/kernel/arch/beehive/init.c b/kernel/arch/beehive/init.c
deleted file mode 100644 (file)
index 74e0da7..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <serial.h>
-#include <stdio.h>
-#include <string.h> // for memmove
-#include <barrelfish_kpi/init.h>
-#include <barrelfish_kpi/paging_arch.h> // for BASE_PAGE_SIZE
-#include <target/beehive/barrelfish_kpi/coredata_target.h>
-#include <corearea.h>
-#include <simctrl.h>
-#include <dcache.h>
-#include "beekernel.h"
-#include "bmp.h"
-
-// <This section should be in a arch header file>
-
-#define MAX_IMAGES 32
-bexec_t *MovedImages[MAX_IMAGES];
-int MovedImageCount;
-
-#define ROUNDUP(x,y) (((x)+(y)-1) & ~((y)-1))
-
-extern void mmu_add_entry(uint32_t start, uint32_t length, int read, int write);
-
-// </This section should be in a arch header file>
-
-extern void ringt0(uint32_t *ptr, int count);
-extern void ringt1(uint32_t *ptr, int count);
-extern void ringt2(uint32_t *ptr, int count);
-extern void ringt3(uint32_t *ptr, int count);
-extern void ringt4(uint32_t *ptr, int count);
-
-uint32_t array[6*10];
-
-// On most systems this is called _end, but on beehive it is a
-// word/code address, and must be shifted for data accesses.
-// care that some of these are Linker absolute and dont relocate
-// properly to other than the first image.
-extern void _code_ibefore(void);
-extern void _code_iafter(void);
-extern void _data_ibefore(void);
-extern void _data_iafter(void);
-
-int bmain(struct beehive_core_data *bcd);
-
-static void MoveImages(void**const pinitaddr, pstringtable_t *const ppstrings);
-
-// findbits.S
-
-extern int find_least_clear32(uint32_t value);
-//extern int find_least_set32(uint32_t value);
-extern int find_least_clear64(uint64_t value);
-extern int find_least_set64(uint64_t value);
-extern int find_highest_clear32(uint32_t value);
-//extern int find_highest_set32(uint32_t value);
-extern int find_highest_clear64(uint64_t value);
-extern int find_highest_set64(uint64_t value);
-extern int population_count(uint32_t value);
-
-// startup.c
-
-extern void kernel_bsp_startup(void* initaddr, pstringtable_t strings);
-extern void kernel_app_startup(struct beehive_core_data *bcd);
-extern void kernel_alloc_init(lpaddr_t base, lpaddr_t limit);
-
-// Tell startup.c where it can start allocating memory
-
-/**
- * \brief Test if this is the bootstrap processor
- *
- */
-inline bool arch_core_is_bsp(void)
-{
-    int core = arch_get_core_id();
-    return core == 1 || core == 2;
-}
-
-/*
- * the bcd pointer is only valid if we are not the boot core
- */
-int bmain(struct beehive_core_data *bcd)
-{
-    uint8_t core;
-
-    core = arch_get_core_id();
-    if (core > 1) {
-       BEE_SIMCTRL(BEE_SIMCTRL_REGISTERS);
-    }
-
-    // do not remove/change this printf: needed by regression harness
-    printf("Barrelfish CPU driver starting on Beehive core %u\n", core);
-
-    mmu_add_entry((uint32_t)_code_ibefore,
-                 (((uint32_t)_data_ibefore) >> 2) - (uint32_t)_code_ibefore,
-                 1, 0);
-
-    // Write system call vector into this core's core area
-    struct corearea *corearea = my_corearea();
-
-    extern void systrap(void); // assembler function
-    corearea->syscall = (uint32_t)systrap;
-    printf("Set system call entry at %p to %#x\n",
-          &corearea->syscall, corearea->syscall);
-
-    extern void interrupt(void); // assembler function
-    corearea->kernel_ticker = (uint32_t)interrupt;
-    printf("Set kernel ticker entry at %p to %#x\n",
-          &corearea->kernel_ticker, corearea->kernel_ticker);
-
-    corearea->kernel_begins = (uint32_t)_code_ibefore;
-    corearea->kernel_ends = (uint32_t)(_data_ibefore) >> 2; // because of linker
-    printf("Set kernel begins %#x and ends %#x\n",
-          corearea->kernel_begins, corearea->kernel_ends);
-
-    // Tests
-
-    extern int lli_test(void);
-    int lli_result = lli_test();
-    if (lli_result == 1)
-       printf("lli_test(): passed ok\n");
-    else
-       printf("\n**** lli_test(): failed with code %#x\n\n", lli_result);
-
-    extern unsigned skip_test(unsigned t); // ~20 cycles per iteration
-    unsigned skip_result = skip_test(arch_is_simulator() ? 100000 : 10000000);
-    if (skip_result != 0)
-       panic("skip_test: %#x\n", skip_result);
-
-
-    // TODO: Might need to move bmp init to before first printf for real HW
-    bmp_init();
-    if (arch_core_is_bsp()) {
-#if 0
-       // XXX HACK
-       if (core == 2) {
-           ringt1(array, 10);
-           for(int i=0; i<60; i+=6) {
-               printf("%8u %8u %8u %8u %8u %8u\n",
-                      array[i], array[i+1], array[i+2],
-                      array[i+3], array[i+4], array[i+5]);
-           }
-       }
-#endif
-        //kernel_startup_early();
-        void *initaddr;
-        pstringtable_t strings;
-        MoveImages(&initaddr, &strings);
-        bee_dcache_flush_all();
-       if (!strings)
-           panic("no string table found");
-        kernel_bsp_startup(initaddr, strings);
-    } else {
-        printf("core_data at %p\n", bcd);
-        printf("cpu_module at %p\n", bcd->cpu_module);
-        printf("monitor_module at %p\n", bcd->monitor_module);
-        kernel_alloc_init(bcd->memory_base, bcd->memory_limit);
-        kernel_app_startup(bcd);
-    }
-
-    return 0; // "error: return type of main is not int"
-} // bmain
-
-
-static unsigned int ImageSum(const unsigned int *ptr, size_t count)
-{
-    unsigned int val = 0;
-    do
-       val += *(ptr++);
-    while(--count > 0);
-    return val ^ ~((val << 1) | (val >> 31));
-}
-
-
-static void MoveImages(void**const pinitaddr, pstringtable_t *const ppstrings)
-{
-    // current last position in word addresses
-    //    uintptr_t codelast = (uintptr_t)0x1000; 
-    uintptr_t codelast = (uintptr_t)&_data_iafter;
-    bexec_t *bexec = (void*)(codelast << 2);
-    pstringtable_t strings = NULL;
-    pstringtable_t strings2 = NULL;
-    printf("_data_iafter = %p\n", &_data_iafter);
-    printf("bexec = %p\n", bexec);
-
-    MovedImageCount = 0;
-    while (MovedImageCount < MAX_IMAGES) {
-       if ((bexec->bmagic == BEXEC_BMAGIC)
-           && (bexec->btorg >= codelast) && (bexec->btsize > 8)
-           && (bexec->bdorg >= bexec->btorg + bexec->btsize)
-           && (bexec->bborg >= bexec->bdorg + bexec->bdsize)
-           && (ImageSum((void*)bexec, bexec->btsize + bexec->bdsize) == 0)) {
-           // Found an image
-           printf("Found image %d at %p [%#x %#x %#x %#x %#x %#x %#x]\n", 
-                   MovedImageCount, bexec, bexec->bmagic,
-                  bexec->btorg, bexec->btsize, bexec->bdorg, bexec->bdsize,
-                  bexec->bborg, bexec->bbsize);
-           MovedImages[MovedImageCount++] = bexec;
-           codelast = ROUNDUP(bexec->bborg + bexec->bbsize, (BASE_PAGE_SIZE >> 2));
-           bexec = (void*)(((uintptr_t)bexec) + ((bexec->btsize + bexec->bdsize) << 2));
-            // Check that we're not exceeding MAX_IMAGES
-            if (MovedImageCount == MAX_IMAGES) {
-              panic("reached MAX_IMAGES before end of input");
-            }
-       } else if (bexec->bmagic == BEXEC_ARGSMAGIC) {
-           strings = (pstringtable_t)bexec;
-           strings2 = (pstringtable_t)(codelast << 2);
-           printf("Found strings area at %p size %u move to %p\n",
-                  strings, strings->slength, strings2);
-           codelast += (ROUNDUP(strings->slength, BASE_PAGE_SIZE)) >> 2;
-           break; // string table is last
-       } else {
-           printf ("No image at %p [%#x %#x %#x %#x %#x %#x %#x]\n", 
-                   bexec, bexec->bmagic,
-                  bexec->btorg, bexec->btsize, bexec->bdorg, bexec->bdsize,
-                  bexec->bborg, bexec->bbsize);
-           break;
-       }
-    }
-    printf("Found %d images total\n", MovedImageCount);
-
-    printf("codelast=%#x\n", codelast);
-
-    if (strings != NULL) {
-       memmove(strings2, strings, strings->slength);
-    }
-
-    // Now they are found, move each one into place and zap its bss
-    for (int i=MovedImageCount-1; i>=0; i--) {
-       bexec = MovedImages[i];
-       // Remember to move backwards down memory
-       void *src = bexec;
-       void *dst = (void*)(bexec->btorg << 2);
-       size_t len = (bexec->bdorg + bexec->bdsize - bexec->btorg) << 2;
-
-       // Must memset before memmove since bexec->... can be different
-       // after the memmove!
-        size_t zlen = ((bexec->bborg+bexec->bbsize)
-                       - (bexec->bdorg+bexec->bdsize));
-        void *edata = (void*)((bexec->bdorg + bexec->bdsize)<<2);
-        memset(edata, 0, zlen << 2);
-
-        if (((uintptr_t)src^(uintptr_t)dst) & (sizeof(uintptr_t)-1)) {
-            printf("warning: slow unaligned memmove\n");
-        }
-       memmove(dst, src, len);
-       MovedImages[i] = dst;
-        bexec = dst;
-#if 0
-        printf("Checksum is now %#x\n", 
-               ImageSum((void*)bexec, bexec->btsize + bexec->bdsize));
-        printf("Checksum (w/BSS) is now %#x\n", 
-               ImageSum((void*)bexec, bexec->btsize + bexec->bdsize + bexec->bbsize));
-#endif
-
-       // And protect it
-        printf("Write-protect TEXT %#x->%#x\n", bexec->btorg, bexec->btorg+bexec->btsize);
-       mmu_add_entry(bexec->btorg, bexec->btsize, 1, 0);       
-        if (i < 1) continue;
-        continue;
-        printf("Write-protect DATA %#x->%#x\n", bexec->bdorg, bexec->bdorg+bexec->bdsize);
-        mmu_add_entry(bexec->bdorg, bexec->bdsize, 1, 0);
-
-        printf("Write-protect BSS %#x->%#x\n", bexec->bborg, bexec->bborg+bexec->bbsize);
-        mmu_add_entry(bexec->bborg, bexec->bbsize, 1, 0);
-
-    }
-
-    printf("All images moved\n");
-
-    // First free address
-    uintptr_t location = codelast << 2;
-
-    // Roundup to a sane granularuity 
-    printf("location = %#x\n", location);
-    location = ROUNDUP(location, BASE_PAGE_SIZE);
-    kernel_alloc_init(location, location + BASE_PAGE_SIZE*1024);
-   
-    // Results
-    *pinitaddr = (MovedImageCount > 0 ? MovedImages[0] : NULL);
-    *ppstrings = strings2;
-} // MoveImages
diff --git a/kernel/arch/beehive/kputchar.c b/kernel/arch/beehive/kputchar.c
deleted file mode 100644 (file)
index 8ae1225..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/**\r
- * \file\r
- * \brief The world's simplest serial driver.\r
- *\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#include <serial.h>\r
-#include <hyper.h>\r
-#include <kputchar.h>\r
-#include <beej7.h>\r
-#include "beekernel.h"\r
-\r
-static uint32_t msg[63];\r
-static char *kputbuf = 0;\r
-\r
-#define KPBUFSZ (61*4)\r
-static int kcount = 0;\r
-\r
-extern int message_recv(int *srce, int *type, uint32_t * buf);\r
-extern void message_send(int dest, int type, uint32_t *buf, int len);\r
-\r
-extern int lockunit_read(int n);\r
-extern void lockunit_write(int n);\r
-\r
-\r
-static  void breakpoint(void) \r
-{\r
-    // Sanity check that breakpoint code doesn't trash registers!\r
-    //__asm volatile ("simctrl 4");\r
-    __asm volatile ("j7        6");\r
-    // __asm volatile ("simctrl 4");\r
-}\r
-\r
-static inline int running(void)\r
-{\r
-    int result;\r
-    __asm("j7 5; ld %[result], link"\r
-         : [result]"=r" (result) :: "link", "cc");\r
-    return result;\r
-}\r
-\r
-\r
-static void kflush(void)\r
-{\r
-    if (kcount > 0) {\r
-        msg[0] = HYPER_SERIAL_OUT;\r
-        msg[1] = kcount;\r
-        int words = 2 + ((kcount+3)>>2);\r
-\r
-       // Wait while any previous message is unfinished\r
-       // indicated by us still having the lock/semaphore\r
-       int mycore = arch_get_core_id();\r
-       int lockval;\r
-       do {\r
-           lockval = lockunit_read(mycore);\r
-           if (lockval != 1 && lockval != 2)\r
-               breakpoint();\r
-       } while(lockval == 2);\r
-\r
-        message_send(1, HYPER_MSG_TYPE, msg, words);\r
-        //breakpoint();\r
-\r
-        kcount = 0;\r
-    }\r
-}\r
-\r
-void kprintf_begin(void)\r
-{\r
-    if (!running())\r
-       breakpoint();\r
-    kcount = 0;\r
-    kputbuf = (char*)&msg[2];\r
-}\r
-\r
-int kputchar(int c)\r
-{\r
-    if (c == '\n') {\r
-       if (kcount == KPBUFSZ)\r
-           kflush();\r
-       kputbuf[kcount++] = '\r';\r
-    }\r
-    if (kcount == KPBUFSZ)\r
-       kflush();\r
-    kputbuf[kcount++] = c;\r
-    return c;\r
-}\r
-\r
-void kprintf_end(void)\r
-{\r
-    kflush();\r
-}\r
-\r
-// End\r
diff --git a/kernel/arch/beehive/microbenchmarks.c b/kernel/arch/beehive/microbenchmarks.c
deleted file mode 100644 (file)
index 60516d1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * \file
- * \brief Architecture-specific microbenchmarks.
- */
-
-/*
- * Copyright (c) 2009, ETH Zurich
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <microbenchmarks.h>
-
-struct microbench arch_benchmarks[] = {
-};
-
-size_t arch_benchmarks_size = sizeof(arch_benchmarks) / sizeof(struct microbench);
diff --git a/kernel/arch/beehive/misc.c b/kernel/arch/beehive/misc.c
deleted file mode 100644 (file)
index e517a79..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/** \file
- * \brief Miscellaneous kernel support code.
- *
- * This file contains miscellaneous architecture-independent kernel support
- * code that doesn't belong anywhere else.
- */
-
-/*
- * Copyright (c) 2007, 2008, 2009, 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <exec.h>
-#include <misc.h>
-
-#define DEFAULT_LOGLEVEL        LOG_DEBUG
-#define DEFAULT_SUBSYSTEM_MASK  (~0L)
-
-/**
- * Global kernel loglevel.
- */
-int kernel_loglevel = DEFAULT_LOGLEVEL;
-
-/**
- * Default kernel subsystem message mask. Determines messages of what subsystems
- * get output.
- */
-int kernel_log_subsystem_mask = DEFAULT_SUBSYSTEM_MASK;
-
-/**
- * 'true' if kernel should handle and context switch on timer ticks.
- * Pass the ticks parameter on the kernel command line if you
- * want to change this.
- */
-bool kernel_ticks_enabled = true;
-
-/**
- * The current time since kernel start in timeslices.
- */
-size_t kernel_now = 0;
-
-
-__attribute__((noinline)) void debug_print_backtrace(void)
-{
-    uintptr_t fp = (uintptr_t)__builtin_frame_address(0);
-    int i=0;
-    printf("Backtrace follows:\n");
-    printf("   ---Frame-- -Address-\n");
-    while ((fp != 0) && ((fp & (sizeof(fp)-1)) == 0)) {
-       printf("%.2i 0x%.8x 0x%.8x\n", i, fp, ((uintptr_t *)fp)[1]);
-       fp = *(uintptr_t *)fp;
-       i++;
-    }
-    printf("%.2i 0x%.8x\n", i, fp);
-}
-
-
-
-/**
- * \brief Print a message and halt the kernel.
- *
- * Something irrecoverably bad happened. Print a panic message, then halt.
- */
-void panic(const char *msg, ...)
-{
-    va_list ap;
-    static char buf[256];
-
-    va_start(ap, msg);
-    vsnprintf(buf, sizeof(buf), msg, ap);
-    va_end(ap);
-
-    printf("kernel PANIC! (core %d) %.*s\n", my_core_id, (int)sizeof(buf), buf);
-
-    debug_print_backtrace();
-
-    extern void _end_simulation(void);
-    _end_simulation();
-
-    // We don't have GDB support - so don't breakpoint
-    //breakpoint();
-    
-    // Halt calls panic! :-)
-    halt();
-}
-
-/**
- * \brief Log a kernel message.
- *
- * Logs printf()-style message 'msg', having loglevel 'level' to the default
- * kernel console(s). Additional arguments are like printf(). Whether the
- * message is put out depends on the current kernel log level.
- *
- * \param level Loglevel of message.
- * \param msg   The message (printf() format string)
- */
-void printk(int level, const char *msg, ...)
-{
-    if(kernel_loglevel > level) {
-        va_list ap;
-        static char buf[256];
-
-        va_start(ap, msg);
-        vsnprintf(buf, sizeof(buf), msg, ap);
-        va_end(ap);
-
-        printf("kernel %.*s", (int)sizeof(buf), buf);
-    }
-}
-
-/**
- * Helper function used in the implementation of assert()
- */
-void __assert(const char *exp, const char *file, const char *func, int line)
-{
-    panic("kernel assertion \"%s\" failed at %s:%d", exp, file, line);
-}
-#if 0
-void
-wait_cycles(uint64_t duration)
-{
-    uint64_t stoptime;
-    stoptime = arch_get_cycle_count() + duration;
-    printk(LOG_NOTE, "Waiting %lu cycles...\n", duration);
-    while (arch_get_cycle_count() < stoptime);
-}
-#endif
-
-/**
- * Kernel trace buffer
- */
-lvaddr_t kernel_trace_buf = 0;
diff --git a/kernel/arch/beehive/page_mappings_arch.c b/kernel/arch/beehive/page_mappings_arch.c
deleted file mode 100644 (file)
index 1cc2f1a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * \file
- * \brief
- */
-
-/*
- * Copyright (c) 2010, ETH Zurich.
- * All rights reserved.
- *
- * This file is distributed under the terms in the attached LICENSE file.
- * If you do not find this file, copies can be found by writing to:
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
- */
-
-#include <kernel.h>
-#include <capabilities.h>
-
-/// Create page mappings
-errval_t caps_copy_to_vnode(struct cte *dest_vnode_cte, cslot_t dest_slot,
-                            struct cte *src_cte, uintptr_t param1,
-                            uintptr_t param2)
-{
-    panic("NYI");
-    return SYS_ERR_OK;
-}
diff --git a/kernel/arch/beehive/ringbmp.c b/kernel/arch/beehive/ringbmp.c
deleted file mode 100644 (file)
index 7d03bf2..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/**\r
- * \file\r
- * \brief Beehive message transport kernel component\r
- */\r
-\r
-/*\r
- * Copyright (c) 2010, ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#include <kernel.h>\r
-#include <hyper.h>\r
-#include <stdlib.h>\r
-#include <stdio.h>\r
-#include <assert.h>\r
-#include <capabilities.h> // cte\r
-#include <dispatch.h> // dcb_current\r
-#include <barrelfish_kpi/lmp.h> // LM_RECV_HEADER_LENGTH\r
-\r
-#include <trace/trace.h>\r
-\r
-#include "bmp.h"\r
-\r
-/*\r
- * Understanding this kernel component transport: this is a connection\r
- * oriented word transport with credit based flow control between\r
- * cores.\r
- *\r
- * Message format: messages have a header word with two fields; one\r
- * contains the credit being sent, the other the channel number.\r
- *\r
- * Receive: the channel number identifies a state record (if invalid\r
- * the data is discarded) which describes the area of memory for\r
- * receipt of the words (base and size) which is used as a circular\r
- * buffer.  A Next index and a Limit index control the use of the\r
- * circular buffer.  How the Next and Limit indices are communicated\r
- * to the user mode process is TBD.\r
- *\r
- * Credits: there are two arrays of credits, one for transmission and\r
- * one for outgoing.  When a message arrives the incoming credit count\r
- * is added to the transmission credit for the remote core.  The size\r
- * of the message, including the hardware header word, is added to the\r
- * outgoing credit count for the remote core.\r
- *\r
- * Processing: when polling (e.g. from the idle loop) messages are\r
- * read and delivered until the incoming fifo is empty.  Then any\r
- * outgoing credit values greater than 2 are sent to the respective\r
- * cores.  Values <= 2 are not sent to avoid ACKing ACKs.\r
- *\r
- * Transmit: a message of n words (including headers) can be sent if\r
- * the amount of credit available is greater than or equal to n + 2.\r
- * The extra 2 is required to ensure that an ACK can be sent at a\r
- * later date without having to wait for one.\r
- *\r
- * MTU: The hardware supports 64 words, i.e. 62 plus our header plus\r
- * HW header, but this is also the flow control limit.  Since we might\r
- * have sent an ACK already which is not acked a common value of\r
- * credit is 62.  Since we have to keep enough credit to be able to\r
- * send an ACK subsequently the maximum sized message is 60 words,\r
- * i.e. 58 words of payload.\r
- */\r
-\r
-#define MAX_PAYLOAD 58\r
-\r
-#define BEEHIVE_RING_TYPE_BMP 2\r
-\r
-#define NUM_ASSOCS 32\r
-\r
-#define BEEHIVE_CORES 16\r
-\r
-static int out_credits[BEEHIVE_CORES];\r
-static int tx_credits[BEEHIVE_CORES];\r
-\r
-static struct cte bmp_dispatch[NUM_ASSOCS];\r
-\r
-void bmp_init(void)\r
-{\r
-    for(int i=0; i<BEEHIVE_CORES; i++) {\r
-       out_credits[i] = 0;\r
-       tx_credits[i] = 64;\r
-    }\r
-}\r
-\r
-\r
-/**\r
- * \brief Deliver a BMP message to a dispatcher.\r
- *\r
- * \param ep     Endpoint capability to send to\r
- * \param len    Number of words to be transferred\r
- * \param msg    Message to be sent\r
- *\r
- * \return Error code\r
- */\r
-errval_t bmp_deliver(struct capability *ep, size_t len,\r
-                     uintptr_t *msg);\r
-\r
-static inline void bmpack(int core, int credit);\r
-static inline void bmptx(int core, int credit, int assoc, int size, uint32_t *ptr);\r
-\r
-extern int message_recv(int *srce, int *type, uint32_t * buf);\r
-extern void message_send(int dest, int type, uint32_t *buf, int len);\r
-extern void message_send_with_header(int dest, int type, uint32_t *buf, int len, uint32_t header);\r
-\r
-extern void halt_unless_timer_pending(void);\r
-\r
-\r
-// Returns 0 if message queue was empty, 1 otherwise\r
-static inline int bmp_process_one(void)\r
-{\r
-    static uint32_t buf[64];\r
-    int core;\r
-    int type;\r
-    int len;\r
-\r
-    for(;;) {\r
-       len = message_recv(&core, &type, buf);\r
-       if (len == 0)\r
-           return 0;\r
-\r
-        if (core == 1) {\r
-           printf("bmpread1: message from hypervisor!\n");\r
-           continue;\r
-        }\r
-       trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_RX, len);\r
-       //debug(SUBSYS_BMP, "bmpread1: len=%d, core=%d, type=%d\n", len, core, type);\r
-\r
-       // Even if it is invalid message it counts for credit\r
-       out_credits[core] += len + 1; // +1 for HW header word\r
-       \r
-       if (type != BEEHIVE_RING_TYPE_BMP) {\r
-           printf("bmpread1: bad type %d\n", type);\r
-           continue;\r
-       }\r
-\r
-       uint32_t header = buf[0];\r
-       //debug(SUBSYS_BMP, "bmpread1: incoming credits: %u\n", header >> 16);\r
-       tx_credits[core] += (header >> 16);\r
-       // If no length then just an ack, no assoc\r
-       if (len == 1)\r
-           continue;\r
-\r
-       header &= 0xffff;\r
-       if (header > NUM_ASSOCS) {\r
-           printf("bmpread1: bad assoc %d\n", header);\r
-           continue;\r
-       }\r
-\r
-       struct capability *cap = &bmp_dispatch[header].cap;\r
-       if (cap->type == ObjType_Null) {\r
-           printf("bmpread1: unused assoc %d\n", header);\r
-           continue;\r
-       }\r
-       assert(cap->type == ObjType_EndPoint);\r
-       // XXX Check incoming core?\r
-\r
-       //debug(SUBSYS_BMP, "Delivering BMP message assoc %u len %u\n", header, len);\r
-       trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_PRE_DELIVER, (uintptr_t)cap);\r
-       errval_t err = bmp_deliver(cap, len -1, &buf[1]);\r
-       trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_POST_DELIVER, (uintptr_t)cap);\r
-       if (err_is_fail(err))\r
-           printf("bmpread1: bmp_deliver: error %u\n", err);\r
-       return 1;\r
-    }\r
-} // bmpread1\r
-\r
-static inline void bmpack(int core, int credit)\r
-{\r
-    uint32_t header = credit << 16;\r
-    message_send_with_header(core, BEEHIVE_RING_TYPE_BMP, NULL, 0, header);\r
-}\r
-\r
-static inline void bmptx(int core, int credit, int assoc, int size, uint32_t *ptr)\r
-{\r
-    uint32_t header = (credit << 16) | assoc;\r
-    message_send_with_header(core, BEEHIVE_RING_TYPE_BMP, ptr, size, header);\r
-}\r
-\r
-\r
-static inline void bmp_send_out_credits(void)\r
-{\r
-    for(int i=0; i<BEEHIVE_CORES; i++) {\r
-       assert(out_credits[i] >= 0 && out_credits[i] <= 64);\r
-       if (out_credits[i] > 2 && tx_credits[i] >= 2) {\r
-           bmpack(i, out_credits[i]);\r
-           out_credits[i] = 0;\r
-           tx_credits[i] -= 2;\r
-       }\r
-    }\r
-}\r
-\r
-void bmp_pump(void)\r
-{\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_PUMP, 1);\r
-    while (bmp_process_one() != 0);\r
-    bmp_send_out_credits();\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_PUMP, 0);\r
-}\r
-\r
-// This returns when the messenger is empty and either a message\r
-// arrived at some point, or a timer interrupt is pending.\r
-void bmp_pump_until_timer(struct corearea *corearea)\r
-{\r
-    int something;\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_PUMP, 2);\r
-    do {\r
-       halt_unless_timer_pending();\r
-       something = bmp_process_one();\r
-       if (something) {\r
-           while (bmp_process_one() != 0);\r
-           bmp_send_out_credits();\r
-       }\r
-    } while(something == 0 && corearea->kernel_pending == 0);\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_PUMP, 0);\r
-}\r
-\r
-void bmp_send(int core, int assoc, int size, uint32_t *words)\r
-{\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_SEND, size);\r
-\r
-    assert(core > 1 && core < BEEHIVE_CORES);\r
-    assert(assoc >= 0 && assoc < NUM_ASSOCS);\r
-    assert(size > 0 && size <= MAX_PAYLOAD);\r
-    assert(words != 0);\r
-\r
-    //debug(SUBSYS_BMP, "bmp_send: core=%u assoc=%u size=%u tx_credits=%u\n",\r
-    //  core, assoc, size, tx_credits[core]);\r
-\r
-    if (tx_credits[core] >= size + 2 + 2)\r
-       goto sendit;\r
-\r
-    for(;;) {\r
-       int idle = bmp_process_one();\r
-       if (tx_credits[core] >= size + 2 + 2)\r
-           goto sendit;\r
-       if (idle)\r
-           bmp_send_out_credits();\r
-    }\r
-\r
-  sendit:\r
-    trace_event(TRACE_SUBSYS_KERNEL, TRACE_EVENT_BMP_SEND, 0);\r
-    //debug(SUBSYS_BMP, "bmp_send: sendit\n");\r
-    // Have enough to send it already\r
-    bmptx(core, out_credits[core], assoc, size, words);\r
-    tx_credits[core] -= size + 2;\r
-    out_credits[core] = 0;\r
-    \r
-    bmp_pump();\r
-}\r
-\r
-/* --------------------------------------------------------------------- */\r
-/* And now for the capability code which manages the ability to send and\r
- * receive on bmp associations\r
- */\r
-\r
-errval_t bmp_deliver(struct capability *ep, size_t len,\r
-                     uintptr_t *msg)\r
-{\r
-    assert(ep != NULL);\r
-    assert(ep->type == ObjType_EndPoint);\r
-    assert(msg != NULL);\r
-    assert(len > 0 && len <= MAX_PAYLOAD);\r
-\r
-    return lmp_deliver_payload(ep, NULL, msg, len, false);\r
-}\r
-\r
-\r
-struct sysret bmp_table_set(struct capability *to, struct idc_recv_msg *msg)\r
-{\r
-    errval_t err;\r
-    unsigned int associd;\r
-    caddr_t cptr;\r
-    struct cte *recv;\r
-\r
-    associd = idc_msg_decode_word_or_zero(msg);\r
-    cptr    = (caddr_t)idc_msg_decode_word_or_zero(msg);\r
-\r
-    err = caps_lookup_slot(&dcb_current->cspace.cap, cptr,\r
-                           CPTR_BITS, &recv, CAPRIGHTS_WRITE);\r
-    if (err_is_fail(err)) {\r
-        return SYSRET(err_push(err, SYS_ERR_BMP_LOOKUP));\r
-    }\r
-\r
-    assert(to->type == ObjType_BMPTable);\r
-    assert(recv != NULL);\r
-\r
-    // Return w/error if cap is not an endpoint\r
-    if(recv->cap.type != ObjType_EndPoint) {\r
-        return SYSRET(SYS_ERR_BMP_NOT_ENDPOINT);\r
-    }\r
-\r
-    // Return w/error if no listener on endpoint\r
-    if(recv->cap.u.endpoint.listener == NULL) {\r
-        return SYSRET(SYS_ERR_BMP_NO_LISTENER);\r
-    }\r
-\r
-    if(associd >= NUM_ASSOCS) {\r
-       return SYSRET(SYS_ERR_BMP_INVALID);\r
-    }\r
-\r
-    // check that we don't overwrite someone else's handler\r
-    if (bmp_dispatch[associd].cap.type != ObjType_Null) {\r
-       printf("kernel: installing new handler for BMP associd %u\n", associd);\r
-       // XXX TODO: Then what?\r
-    }\r
-    err = caps_copy_to_cte(&bmp_dispatch[associd], recv, false, 0, 0);\r
-    return SYSRET(err);\r
-}\r
-\r
-struct sysret bmp_table_delete(struct capability *to, struct idc_recv_msg *msg)\r
-{\r
-    assert(to->type == ObjType_IRQTable);\r
-\r
-    unsigned int associd = idc_msg_decode_word_or_zero(msg);\r
-\r
-    if (associd >= NUM_ASSOCS) {\r
-       return SYSRET(SYS_ERR_BMP_INVALID);\r
-    }\r
-\r
-    bmp_dispatch[associd].cap.type = ObjType_Null;\r
-    return SYSRET(SYS_ERR_OK);\r
-}\r
-\r
-/* End */\r
diff --git a/kernel/arch/beehive/ringtest.S b/kernel/arch/beehive/ringtest.S
deleted file mode 100644 (file)
index 968a5a0..0000000
+++ /dev/null
@@ -1,494 +0,0 @@
-/**\r
- * \file\r
- * \brief Bootstrap the kernel.\r
- */\r
-/*\r
- * Copyright (c) 2009 ETH Zurich.\r
- * All rights reserved.\r
- *\r
- * This file is distributed under the terms in the attached LICENSE file.\r
- * If you do not find this file, copies can be found by writing to:\r
- * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.\r
- */\r
-\r
-#include <regconvention.h>\r
-\r
-       \r
-// Exports:\r
-       .globl  _message_send\r
-       .globl  _message_send_with_header\r
-       .globl  _message_recv\r
-\r
-// Constants:\r
-       msgControl = 18\r
-       lockControl = 22\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-//                                                                        //\r
-// void message_send(int dest, int type, msg_t *buf, int len)             //\r
-//                                                                        //\r
-// Send a message to core number "dest", using "len" words at "buf".      //\r
-//                                                                        //\r
-// Arguments are in r3-r6                                                 //\r
-//                                                                        //\r
-// The implementation has no uses of LINK, including long_* ops, so we    //\r
-// don't need to preserve LINK on the stack.                              //\r
-//                                                                        //\r
-////////////////////////////////////////////////////////////////////////////\r
-       //.type _message_send, @function\r
-_message_send:\r
-                                       // ... first place data on wq\r
-       ld      r7,r6                   // r7 (loop variable) = msg length\r
-x0:\r
-       sub     r5,r5,4                 // we will preincrement\r
-x1:\r
-       sub     r7,r7,1\r
-       jm      x2                      // bail if done copying\r
-       aqr_add r5,r5,4                 // preincremnet and fetch word\r
-       ld      wq,rq                   // copy word onto wq\r
-       j       x1\r
-x2:                                    // ... now assemble the address\r
-       lsl     r4,r4,6                 // r4 = type << 6\r
-       add_lsl r4,r4,r6,4              // r4 = (r4 + len) << 4\r
-       add_lsl r4,r4,r3,5              // r4 = (r4 + dest) << 5\r
-       aqw_add r4,r4,msgControl        // initiate the write\r
-       j       link\r
-       .size   _message_send,.-_message_send\r
-\r
-////////////////////////////////////////////////////////////////////////////\r
-//                                                                        //\r
-// void message_send_with_header(int dest, int type, msg_t *buf, int len, //\r
-//                               unsigned hdr)                            //\r
-//                                                                        //\r
-// Varaint in which we prepend message with word "hdr".                   //\r
-// Tweak a few things and then jump into _message_send.                   //\r
-// Arguments are in r3-r7                                                 //\r
-//                                                                        //\r
-////////////////////////////////////////////////////////////////////////////\r
-_message_send_with_header:\r
-       ld      wq, r7                  // place header word on wq\r
-       ld      r7, r6                  // loop variable additional words\r
-       add     r6, r6, 1               // length includes hdr\r
-       j       x0\r
-       \r
-////////////////////////////////////////////////////////////////////////////\r
-//                                                                        //\r
-// int message_recv(int *srce, int *type, msg_t * buf)                    //\r
-//                                                                        //\r
-// Receive a message into "buf" and return its word length, or 0.         //\r
-//                                                                        //\r
-// Arguments are in r3-r5, result goes in r1                              //\r
-//                                                                        //\r
-////////////////////////////////////////////////////////////////////////////\r
-       .type   _message_recv, @function\r
-_message_recv:\r
-       aqw_sub sp,sp,4\r
-       ld      wq,link\r
-       aqr_ld  vb,msgControl           // read the device\r
-       ld      r1,rq                   // r1 = status\r
-       jz      x4                      // if status == 0 then return 0\r
-       ld      r6,r1                   // r6 = status\r
-       and     r1,r6,63                // r1 = msg length\r
-       aqw_ld  vb,r4                   // &type\r
-       lsr     r6,r6,6\r
-       and     wq,r6,15\r
-       aqw_ld  vb,r3                   // &srce\r
-       lsr     r6,r6,4\r
-       and     wq,r6,15\r
-       ld      r7,r1                   // r7 (loop variable) = msg length\r
-x3:\r
-       sub     r7,r7,1\r
-       jm      x4                      // exit loop if done copying\r
-       aqw_ld  vb,r5\r
-       ld      wq,rq                   // copy word onto wq\r
-       add     r5,r5,4                 // next word address\r
-       j       x3\r
-x4:\r
-       aqr_add sp,sp,0\r
-       add     sp,sp,4\r
-       j       rq\r
-       .size   _message_recv,.-_message_recv\r
-\r
-\r
-       .globl _lockunit_read\r
-_lockunit_read:\r
-       lsl     r3, r3, 5\r
-       aqr_add r3, r3, lockControl\r
-       ld      r1, rq\r
-       j       link\r
-\r
-       .globl _lockunit_write\r
-_lockunit_write:\r
-       lsl     r3, r3, 5\r
-       aqw_add r3, r3, lockControl\r
-       j       link\r
-\r
-\r
-// ------------------------------------------------------------\r
-#if 0\r
-       .code\r
-       /* Read the cycle counter register several times */\r
-       .globl ringt0\r
-ringt0:        \r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      r0, r0\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       ld      r0, r0\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-\r
-       ld      r1, rq\r
-       sub     r2, rq, r1\r
-       sub     r3, rq, r1\r
-       sub     r4, rq, r1\r
-       sub     r5, rq, r1\r
-       sub     r6, rq, r1\r
-       sub     r7, rq, r1\r
-               \r
-       j       link\r
-\r
-/* ================================================== */\r
-\r
-       .globl _ringt0\r
-_ringt0:\r
-       ld      t2, ringt0\r
-       j       doperf\r
-\r
-       .globl _ringt1\r
-_ringt1:\r
-       ld      t2, ringt1\r
-       j       doperf\r
-\r
-       .globl _ringt2\r
-_ringt2:\r
-       ld      t2, ringt2\r
-       j       doperf\r
-\r
-       .globl _ringt3\r
-_ringt3:\r
-       ld      t2, ringt3\r
-       j       doperf\r
-\r
-       .globl _ringt4\r
-_ringt4:\r
-       ld      t2, ringt4\r
-       j       doperf\r
-\r
-       \r
-       /* doperf: t2 is function to call, a1 is ptr, a2 is count */\r
-doperf:\r
-       aqw_sub sp, sp, 4\r
-       ld      wq, link\r
-       aqw_sub sp, sp, 4\r
-       ld      wq, s1\r
-       aqw_sub sp, sp, 4\r
-       ld      wq, s2\r
-       aqw_sub sp, sp, 4\r
-       ld      wq, s3\r
-\r
-       ld      s3, t2\r
-       sub     s1, a1, 4\r
-       ld      s2, a2\r
-       jz      dp0B\r
-dp0A:  \r
-       aqw_long_ld vb, 0x8001fc03 ROL 2 /* flush whole cache */\r
-       add_lsl r1, s2, 0x40, 8\r
-dp0A1: sub     r1, r1, 1\r
-       jnz     dp0A1\r
-       call    s3\r
-       aqw_add s1, s1, 4\r
-       ld      wq, r2\r
-       aqw_add s1, s1, 4\r
-       sub     wq, r3, r2\r
-       aqw_add s1, s1, 4\r
-       sub     wq, r4, r3\r
-       aqw_add s1, s1, 4\r
-       sub     wq, r5, r4\r
-       aqw_add s1, s1, 4\r
-       sub     wq, r6, r5\r
-       aqw_add s1, s1, 4\r
-       sub     wq, r7, r6\r
-       sub     s2, s2, 1\r
-       jnz     dp0A\r
-dp0B:\r
-       aqr_add sp, sp, 0\r
-       aqr_add sp, sp, 4\r
-       aqr_add sp, sp, 4\r
-       aqr_add sp, sp, 4\r
-       add     sp, sp, 4\r
-       ld      s3, rq\r
-       ld      s2, rq\r
-       ld      s1, rq\r
-       simctrl 3\r
-       j       rq\r
-       \r
-/* ================================================== */\r
-       \r
-       .globl ringt1\r
-ringt1:\r
-       ld      t3, link\r
-\r
-       // t1 gets message send address, type=1 length=4 dest=2, io=4\r
-       long_ld t1, (0x80000000 + (1 LSL 13) + (4 LSL 7) + (2 LSL 3) + 4) ROL 2\r
-\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      wq, t1\r
-       ld      wq, t1\r
-       ld      wq, t1\r
-       ld      wq, t1\r
-       aqw_ld  vb, t1\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-\r
-       ld      r1, rq\r
-       sub     r2, rq, r1\r
-       sub     r3, rq, r1\r
-\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-rt1p1: sub     r4, rq, r1\r
-       aqr_ld  vb, t1\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      t2, rq\r
-       lsl     vb, t2, 18\r
-       jz      rt1p1\r
-       ld      vb, rq          /* discard one word */\r
-       ld      vb, rq          /* discard one word */\r
-       ld      vb, rq          /* discard one word */\r
-       ld      vb, rq          /* discard one word */\r
-       sub     r5, rq, r1\r
-       ld      r6, r5\r
-       ld      r7, r5\r
-       j       t3\r
-\r
-/* ================================================== */\r
-\r
-       .globl ringt2\r
-ringt2:\r
-       ld      t3, link\r
-\r
-       // t1 gets message send address, type=1 length=3 dest=1, io=4\r
-       long_ld t1, (0x80000000 + (1 LSL 13) + (3 LSL 7) + (1 LSL 3) + 4) ROL 2\r
-\r
-       aqr_ld  vb, (0x80000000 + (1 LSL 3)) ROL 2\r
-       ld      wq, t1\r
-       ld      wq, t1\r
-       ld      wq, t1\r
-       aqw_ld  vb, t1\r
-