// 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"
#include "../../cmd/ld/textflag.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 NOSPLIT
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();
}
