aboutsummaryrefslogtreecommitdiff
path: root/PORTING
blob: 9dc77d51a327969dd168c799373f79c83c79b88f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Need to write better notes.]

Look for files named *386* or *FreeBSD* and you'll see what
you need to implement for your architecture of choice.

The hardest thing is probably the assembly routines: 
src/lib9/tas-$SYSTYPE.s and src/libthread/asm-$SYSTYPE-$OBJTYPE.s.
The former is a test and set used to implement shared-memory
spin locks.  The latter is a stripped down setjmp and longjmp
used to implement stack switching in the thread library.
Also, src/libthread/$OBJTYPE.c needs to know how to set up a stack
frame for the given object type.

If you're only interested in mk and sam, you don't need to
write any assembly to do a port.  Acme and samterm require everything
though, since it uses libthread.