// Copyright 2013 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 "defs_GOOS_GOARCH.h"
#include "os_GOOS.h"
#include "signal_GOOS_GOARCH.h"

void
runtime·lwp_mcontext_init(McontextT *mc, void *stack, M *mp, G *gp, void (*fn)(void))
{
	mc->__gregs[REG_R15] = (uint32)runtime·lwp_tramp;
	mc->__gregs[REG_R13] = (uint32)stack;
	mc->__gregs[REG_R0] = (uint32)mp;
	mc->__gregs[REG_R1] = (uint32)gp;
	mc->__gregs[REG_R2] = (uint32)fn;
}

void
runtime·checkgoarm(void)
{
	// TODO(minux)
}

#pragma textflag 7
int64
runtime·cputicks() {
	// Currently cputicks() is used in blocking profiler and to seed runtime·fastrand1().
	// runtime·nanotime() is a poor approximation of CPU ticks that is enough for the profiler.
	// TODO: need more entropy to better seed fastrand1.
	return runtime·nanotime();
}
