blob: 08124d3cbded861811b5cc9c4a02704a16dc84fb [file] [log] [blame]
Angel Pons5de47d02020-04-04 18:51:30 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Xiang Wang2e38dbe2018-08-28 16:34:29 +08002
3#include <mcall.h>
Xiang Wang7c9540e2018-10-11 17:30:37 +08004#include <stdint.h>
Kyösti Mälkki13f66502019-03-03 08:01:05 +02005#include <device/mmio.h>
Xiang Wangaa5f8212018-08-27 13:32:32 +08006#include <soc/addressmap.h>
Xiang Wang2e38dbe2018-08-28 16:34:29 +08007
Xiang Wang2e38dbe2018-08-28 16:34:29 +08008void mtime_init(void)
9{
Xiang Wangaa5f8212018-08-27 13:32:32 +080010 long hart_id = read_csr(mhartid);
11 HLS()->time = (uint64_t *)(FU540_CLINT + 0xbff8);
12 HLS()->timecmp = (uint64_t *)(FU540_CLINT + 0x4000 + 8 * hart_id);
13}
14
15void set_msip(int hartid, int val)
16{
Xiang Wang7c9540e2018-10-11 17:30:37 +080017 write32((void *)(FU540_CLINT + 4 * (uintptr_t)hartid), !!val);
Xiang Wang2e38dbe2018-08-28 16:34:29 +080018}