Skip to content

Commit 6ad34d1

Browse files
committed
add os161 source tree
1 parent ef26c18 commit 6ad34d1

File tree

608 files changed

+62001
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

608 files changed

+62001
-0
lines changed

exercise-simple/os161/CHANGES

+424
Large diffs are not rendered by default.

exercise-simple/os161/Makefile

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#
2+
# Toplevel makefile for OS/161.
3+
#
4+
#
5+
# Main rules:
6+
# all (default): depend and compile system; install into staging area
7+
# rebuild: likewise, but start with a clean slate.
8+
# fullrebuild: likewise, but start with a very clean slate.
9+
#
10+
# What all does, in order:
11+
# tools: depend and compile the tools used in build.
12+
# includes: install header files.
13+
# build: depend and compile the system.
14+
#
15+
# Other targets:
16+
# depend: just update make dependency information.
17+
# tags: generate/regenerate "tags" files.
18+
# install: install into $(OSTREE).
19+
# clean: remove generated files.
20+
# distclean: remove all generated files.
21+
#
22+
23+
TOP=.
24+
.include "$(TOP)/mk/os161.config.mk"
25+
26+
all:; # make this first
27+
28+
MKDIRS=$(OSTREE)
29+
30+
.include "$(TOP)/mk/os161.mkdirs.mk"
31+
32+
all: tools .WAIT includes .WAIT build
33+
34+
rebuild:
35+
$(MAKE) clean
36+
$(MAKE) all
37+
38+
fullrebuild:
39+
$(MAKE) distclean
40+
$(MAKE) all
41+
42+
# currently no tools required, hence no tools/ dir or work to do
43+
tools:
44+
@true
45+
46+
build:
47+
(cd user && $(MAKE) build)
48+
(cd man && $(MAKE) install-staging)
49+
50+
includes tags depend:
51+
(cd kern && $(MAKE) $@)
52+
(cd user && $(MAKE) $@)
53+
54+
clean:
55+
(cd kern && $(MAKE) $@)
56+
(cd user && $(MAKE) $@)
57+
rm -rf $(INSTALLTOP)
58+
59+
distclean: clean
60+
rm -rf $(WORKDIR)
61+
62+
install: $(OSTREE)
63+
(cd $(INSTALLTOP) && tar -cf - .) | (cd $(OSTREE) && tar -xvf -)
64+
65+
66+
.PHONY: all rebuild fullrebuild tools build includes tags depend
67+
.PHONY: clean distclean
68+
69+
# old BSD name, same as distclean
70+
cleandir: distclean
71+
.PHONY: cleandir

exercise-simple/os161/README

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Version 1.99.05 of OS/161
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
These are support functions needed by gcc to perform operations on
2+
64-bit integer types on 32-bit machines. The names are meaningful to
3+
the gcc back end. The term "millicode" is sometimes used to describe
4+
such compiler support code.
5+
6+
This code was taken from NetBSD's src/common/lib/libc/quad, and
7+
polished some for OS/161.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*-
2+
* Copyright (c) 1992, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* This software was developed by the Computer Systems Engineering group
6+
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7+
* contributed to Berkeley.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in the
16+
* documentation and/or other materials provided with the distribution.
17+
* 3. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)adddi3.c 8.1 (Berkeley) 6/4/93
35+
* NetBSD: adddi3.c,v 1.1 2005/12/20 19:28:51 christos Exp
36+
*/
37+
38+
#include "longlong.h"
39+
40+
/*
41+
* Add two long longs. This is trivial since a one-bit carry from a
42+
* single unsigned int addition x+y occurs if and only if the sum x+y
43+
* is less than either x or y (the choice to compare with x or y is
44+
* arbitrary).
45+
*/
46+
long long
47+
__adddi3(long long a, long long b)
48+
{
49+
union uu aa, bb, sum;
50+
51+
aa.ll = a;
52+
bb.ll = b;
53+
sum.ui[L] = aa.ui[L] + bb.ui[L];
54+
sum.ui[H] = aa.ui[H] + bb.ui[H] + (sum.ui[L] < bb.ui[L]);
55+
return (sum.ll);
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*-
2+
* Copyright (c) 1992, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* This software was developed by the Computer Systems Engineering group
6+
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7+
* contributed to Berkeley.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in the
16+
* documentation and/or other materials provided with the distribution.
17+
* 3. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)anddi3.c 8.1 (Berkeley) 6/4/93
35+
* NetBSD: anddi3.c,v 1.1 2005/12/20 19:28:51 christos Exp
36+
*/
37+
38+
#include "longlong.h"
39+
40+
/*
41+
* Return a & b, in long long.
42+
*/
43+
long long
44+
__anddi3(long long a, long long b)
45+
{
46+
union uu aa, bb;
47+
48+
aa.ll = a;
49+
bb.ll = b;
50+
aa.ui[0] &= bb.ui[0];
51+
aa.ui[1] &= bb.ui[1];
52+
return (aa.ll);
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*-
2+
* Copyright (c) 1992, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* This software was developed by the Computer Systems Engineering group
6+
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7+
* contributed to Berkeley.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in the
16+
* documentation and/or other materials provided with the distribution.
17+
* 3. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)ashldi3.c 8.1 (Berkeley) 6/4/93
35+
* NetBSD: ashldi3.c,v 1.1 2005/12/20 19:28:51 christos Exp
36+
*/
37+
38+
#include "longlong.h"
39+
40+
/*
41+
* Shift a (signed) long long value left (arithmetic shift left).
42+
* This is the same as logical shift left!
43+
*/
44+
long long
45+
__ashldi3(long long a, unsigned int shift)
46+
{
47+
union uu aa;
48+
49+
if (shift == 0)
50+
return(a);
51+
aa.ll = a;
52+
if (shift >= INT_BITS) {
53+
aa.ui[H] = aa.ui[L] << (shift - INT_BITS);
54+
aa.ui[L] = 0;
55+
} else {
56+
aa.ui[H] = (aa.ui[H] << shift) |
57+
(aa.ui[L] >> (INT_BITS - shift));
58+
aa.ui[L] <<= shift;
59+
}
60+
return (aa.ll);
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/*-
2+
* Copyright (c) 1992, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* This software was developed by the Computer Systems Engineering group
6+
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7+
* contributed to Berkeley.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in the
16+
* documentation and/or other materials provided with the distribution.
17+
* 3. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)ashrdi3.c 8.1 (Berkeley) 6/4/93
35+
* NetBSD: ashrdi3.c,v 1.1 2005/12/20 19:28:51 christos Exp
36+
*/
37+
38+
#include "longlong.h"
39+
40+
/*
41+
* Shift a (signed) long long value right (arithmetic shift right).
42+
*/
43+
long long
44+
__ashrdi3(long long a, unsigned int shift)
45+
{
46+
union uu aa;
47+
48+
if (shift == 0)
49+
return(a);
50+
aa.ll = a;
51+
if (shift >= INT_BITS) {
52+
int s;
53+
54+
/*
55+
* Smear bits rightward using the machine's right-shift
56+
* method, whether that is sign extension or zero fill,
57+
* to get the `sign word' s. Note that shifting by
58+
* INT_BITS is undefined, so we shift (INT_BITS-1),
59+
* then 1 more, to get our answer.
60+
*/
61+
/* LINTED inherits machine dependency */
62+
s = (aa.si[H] >> (INT_BITS - 1)) >> 1;
63+
/* LINTED inherits machine dependency*/
64+
aa.ui[L] = aa.si[H] >> (shift - INT_BITS);
65+
aa.ui[H] = s;
66+
} else {
67+
aa.ui[L] = (aa.ui[L] >> shift) |
68+
(aa.ui[H] << (INT_BITS - shift));
69+
/* LINTED inherits machine dependency */
70+
aa.si[H] >>= shift;
71+
}
72+
return (aa.ll);
73+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*-
2+
* Copyright (c) 1992, 1993
3+
* The Regents of the University of California. All rights reserved.
4+
*
5+
* This software was developed by the Computer Systems Engineering group
6+
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7+
* contributed to Berkeley.
8+
*
9+
* Redistribution and use in source and binary forms, with or without
10+
* modification, are permitted provided that the following conditions
11+
* are met:
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in the
16+
* documentation and/or other materials provided with the distribution.
17+
* 3. Neither the name of the University nor the names of its contributors
18+
* may be used to endorse or promote products derived from this software
19+
* without specific prior written permission.
20+
*
21+
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31+
* SUCH DAMAGE.
32+
*
33+
* From:
34+
* @(#)cmpdi2.c 8.1 (Berkeley) 6/4/93
35+
* NetBSD: cmpdi2.c,v 1.1 2005/12/20 19:28:51 christos Exp
36+
*/
37+
38+
#include "longlong.h"
39+
40+
/*
41+
* Return 0, 1, or 2 as a <, =, > b respectively.
42+
* Both a and b are considered signed---which means only the high word is
43+
* signed.
44+
*/
45+
int
46+
__cmpdi2(long long a, long long b)
47+
{
48+
union uu aa, bb;
49+
50+
aa.ll = a;
51+
bb.ll = b;
52+
return (aa.si[H] < bb.si[H] ? 0 : aa.si[H] > bb.si[H] ? 2 :
53+
aa.ui[L] < bb.ui[L] ? 0 : aa.ui[L] > bb.ui[L] ? 2 : 1);
54+
}

0 commit comments

Comments
 (0)