mirror of
https://github.com/golang/go
synced 2024-11-21 20:34:40 -07:00
small embedded target for arm.
R=rsc CC=golang-dev https://golang.org/cl/193104
This commit is contained in:
parent
cb58ed75d2
commit
9f5264f299
4
src/pkg/runtime/embedded/README
Normal file
4
src/pkg/runtime/embedded/README
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
small embedded target for arm
|
||||||
|
define the c function write to make debug output work
|
||||||
|
|
||||||
|
|
1
src/pkg/runtime/embedded/arm/defs.h
Normal file
1
src/pkg/runtime/embedded/arm/defs.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing to see here
|
1
src/pkg/runtime/embedded/arm/rt0.s
Normal file
1
src/pkg/runtime/embedded/arm/rt0.s
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing to see here
|
1
src/pkg/runtime/embedded/arm/signal.c
Normal file
1
src/pkg/runtime/embedded/arm/signal.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing to see here
|
1
src/pkg/runtime/embedded/arm/sys.s
Normal file
1
src/pkg/runtime/embedded/arm/sys.s
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing to see here
|
40
src/pkg/runtime/embedded/mem.c
Normal file
40
src/pkg/runtime/embedded/mem.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// Copyright 2010 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "runtime.h"
|
||||||
|
#include "malloc.h"
|
||||||
|
|
||||||
|
// Assume there's an arbitrary amount of memory starting at "end".
|
||||||
|
|
||||||
|
void*
|
||||||
|
SysAlloc(uintptr ask)
|
||||||
|
{
|
||||||
|
static byte *p;
|
||||||
|
extern byte end[];
|
||||||
|
byte *q;
|
||||||
|
|
||||||
|
if(p == nil) {
|
||||||
|
p = end;
|
||||||
|
p += 7 & -(uintptr)p;
|
||||||
|
}
|
||||||
|
ask += 7 & -ask;
|
||||||
|
|
||||||
|
q = p;
|
||||||
|
p += ask;
|
||||||
|
·memclr(q, ask);
|
||||||
|
return q;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SysFree(void *v, uintptr n)
|
||||||
|
{
|
||||||
|
USED(v, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SysUnused(void *v, uintptr n)
|
||||||
|
{
|
||||||
|
USED(v, n);
|
||||||
|
}
|
||||||
|
|
1
src/pkg/runtime/embedded/os.h
Normal file
1
src/pkg/runtime/embedded/os.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing to see here
|
80
src/pkg/runtime/embedded/thread.c
Normal file
80
src/pkg/runtime/embedded/thread.c
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// Copyright 2010 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "runtime.h"
|
||||||
|
|
||||||
|
int8 *goos = "embedded";
|
||||||
|
|
||||||
|
void
|
||||||
|
minit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
osinit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
initsig(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
exit(int32)
|
||||||
|
{
|
||||||
|
for(;;);
|
||||||
|
}
|
||||||
|
|
||||||
|
// single processor, no interrupts,
|
||||||
|
// so no need for real concurrency or atomicity
|
||||||
|
|
||||||
|
void
|
||||||
|
newosproc(M *m, G *g, void *stk, void (*fn)(void))
|
||||||
|
{
|
||||||
|
USED(m, g, stk, fn);
|
||||||
|
throw("newosproc");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lock(Lock *l)
|
||||||
|
{
|
||||||
|
if(m->locks < 0)
|
||||||
|
throw("lock count");
|
||||||
|
m->locks++;
|
||||||
|
if(l->key != 0)
|
||||||
|
throw("deadlock");
|
||||||
|
l->key = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
unlock(Lock *l)
|
||||||
|
{
|
||||||
|
m->locks--;
|
||||||
|
if(m->locks < 0)
|
||||||
|
throw("lock count");
|
||||||
|
if(l->key != 1)
|
||||||
|
throw("unlock of unlocked lock");
|
||||||
|
l->key = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
noteclear(Note *n)
|
||||||
|
{
|
||||||
|
n->lock.key = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
notewakeup(Note *n)
|
||||||
|
{
|
||||||
|
n->lock.key = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
notesleep(Note *n)
|
||||||
|
{
|
||||||
|
if(n->lock.key != 1)
|
||||||
|
throw("notesleep");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user