Skip to content

Commit

Permalink
Adding freestanding stubs for MPS library and VM so that C library ca…
Browse files Browse the repository at this point in the history
…n be excluded.
  • Loading branch information
rptb1 committed Feb 13, 2023
1 parent 57b429e commit 9bc1f98
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 17 deletions.
3 changes: 2 additions & 1 deletion code/mps.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@
#if defined(PLINTH) /* see CONFIG_PLINTH_NONE in config.h */
#include "mpsliban.c"
#include "mpsioan.c"
/* FIXME: Is vman part of the plinth? Not really. Explain this. */
#include "vman.c" /* malloc-based pseudo memory mapping */
#endif

/* Generic ("ANSI") platform */
Expand All @@ -104,7 +106,6 @@

#include "lockan.c" /* generic locks */
#include "than.c" /* generic threads manager */
#include "vman.c" /* malloc-based pseudo memory mapping */
#include "protan.c" /* generic memory protection */
#include "prmcan.c" /* generic operating system mutator context */
#include "prmcanan.c" /* generic architecture mutator context */
Expand Down
20 changes: 4 additions & 16 deletions code/mpslibfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
*
* .purpose: The purpose of this code is to test at compile time
* whether the code MPS can be compiled as freestanding [FIXME: ref?]
* with a command like::
*
* gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI \
* --entry mps_lib_assert_fail mps.c mpslibfs.c vmfs.c
*
* .readership: For MPS client application developers and MPS developers.
* .sources: <design/lib>
Expand Down Expand Up @@ -112,22 +116,6 @@ mps_res_t mps_io_flush(mps_io_t mps_io)
}


/* main -- dummy entry point
*
* Main is included here so that a command like::
*
* gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI mps.c mpslibfs.c
*
* can run to completion of the linker and reveal external
* dependencies.
*/

int main(void)
{
return 0;
}


/* C. COPYRIGHT AND LICENSE
*
* Copyright (C) 2001-2023 Ravenbrook Limited <https://www.ravenbrook.com/>.
Expand Down
93 changes: 93 additions & 0 deletions code/vmfs.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/* vmfs.c: FREESTANDING VM: VIRTUAL MEMORY MAPPING STUB
*
* $Id$
* Copyright (c) 2001-2023 Ravenbrook Limited. See end of file for license.
*
* .purpose: The purpose of this code is to test at compile time
* whether the code MPS can be compiled as freestanding [FIXME: ref?]
* with a command like::
*
* gcc -nostdlib -DCONFIG_PLINTH_NONE -DCONFIG_PF_ANSI \
* --entry mps_lib_assert_fail mps.c mpslibfs.c vmfs.c
*
* .sources: design.mps.lib
*/

#include "mpm.h"
#include "vm.h"

SRCID(vmfs, "$Id$");


Size PageSize(void)
{
NOTREACHED;
}


Res VMParamFromArgs(void *params, size_t paramSize, ArgList args)
{
NOTREACHED;
}


/* VMInit -- reserve some virtual address space, and create a VM structure */

Res VMInit(VM vm, Size size, Size grainSize, void *params)
{
NOTREACHED;
}


/* VMFinish -- release all address space and finish VM structure */

void VMFinish(VM vm)
{
NOTREACHED;
}


/* VMMap -- map the given range of memory */

Res VMMap(VM vm, Addr base, Addr limit)
{
NOTREACHED;
}


/* VMUnmap -- unmap the given range of memory */

void VMUnmap(VM vm, Addr base, Addr limit)
{
NOTREACHED;
}


/* C. COPYRIGHT AND LICENSE
*
* Copyright (C) 2001-2023 Ravenbrook Limited <https://www.ravenbrook.com/>.
*
* 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* HOLDER 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.
*/

0 comments on commit 9bc1f98

Please sign in to comment.