Files
openbios/kernel/primitives.c
Blue Swirl a757800a01 Remove unnecessary trailing newlines
git-svn-id: svn://coreboot.org/openbios/openbios-devel@285 f158a5a8-5612-0410-a976-696ce0be7e32
2008-12-13 09:26:41 +00:00

148 lines
3.3 KiB
C

/* tag: the main file which includes all the prim code headers
*
* Copyright (C) 2003 Patrick Mauritz, Stefan Reinauer
*
* see the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#include "openbios/config.h"
#include "openbios/sysinclude.h"
#include "openbios/stack.h"
#include "openbios/kernel.h"
#include "dict.h"
/*
* cross platform abstraction
*/
#include "cross.h"
/*
* Code Field Address (CFA) definitions (DOCOL and the like)
*/
#include "internal.c"
/* include forth primitives needed to set up
* all the words described in IEEE1275-1994.
*/
#include "forth.c"
/* words[] is a function array of all native code functions in used by
* the dictionary, i.e. CFAs and primitives.
* Any change here needs a matching change in the primitive word's
* name list that is kept for bootstrapping in arch/unix/unix.c
*
* NOTE: THIS LIST SHALL NOT CHANGE (EXCEPT MANDATORY ADDITIONS AT
* THE END). ANY OTHER CHANGE WILL BREAK COMPATIBILITY TO OLDER
* BINARY DICTIONARIES.
*/
void * const words[] = {
/*
* CFAs and special words
*/
semis,
docol,
lit,
docon,
dovar,
dodefer,
dodoes,
dodo,
doisdo,
doloop,
doplusloop,
doival,
doivar,
doidefer,
/*
* primitives
*/
fdup, /* dup */
twodup, /* 2dup */
isdup, /* ?dup */
over, /* over */
twoover, /* 2over */
pick, /* pick */
drop, /* drop */
twodrop, /* 2drop */
nip, /* nip */
roll, /* roll */
rot, /* rot */
minusrot, /* -rot */
swap, /* swap */
twoswap, /* 2swap */
tor, /* >r */
rto, /* r> */
rfetch, /* r@ */
depth, /* depth */
depthwrite, /* depth! */
rdepth, /* rdepth */
rdepthwrite, /* rdepth! */
plus, /* + */
minus, /* - */
mult, /* * */
umult, /* u* */
mudivmod, /* mu/mod */
forthabs, /* abs */
negate, /* negate */
max, /* max */
min, /* min */
lshift, /* lshift */
rshift, /* rshift */
rshifta, /* >>a */
and, /* and */
or, /* or */
xor, /* xor */
invert, /* invert */
dplus, /* d+ */
dminus, /* d- */
mmult, /* m* */
ummult, /* um* */
fetch, /* @ */
cfetch, /* c@ */
wfetch, /* w@ */
lfetch, /* l@ */
store, /* ! */
plusstore, /* +! */
cstore, /* c! */
wstore, /* w! */
lstore, /* l! */
equals, /* = */
greater, /* > */
less, /* < */
ugreater, /* u> */
uless, /* u< */
spfetch, /* sp@ */
fmove, /* move */
ffill, /* fill */
emit, /* emit */
iskey, /* key? */
key, /* key */
execute, /* execute */
here, /* here */
herewrite, /* here! */
dobranch, /* dobranch */
docbranch, /* do?branch */
unalignedwordread, /* unaligned-w@ */
unalignedwordwrite, /* unaligned-w! */
unalignedlongread, /* unaligned-w@ */
unalignedlongwrite, /* unaligned-w! */
iocfetch, /* ioc@ */
iowfetch, /* iow@ */
iolfetch, /* iol@ */
iocstore, /* ioc! */
iowstore, /* iow! */
iolstore, /* iol! */
loop_i, /* i */
loop_j, /* j */
call, /* call */
sysdebug, /* sys-debug */
do_include, /* $include */
do_encode_file, /* $encode-file */
};