blob: 244bc5e6171f1508ce4bdfb4d23258f2f64e6886 [file] [log] [blame]
Andrew Scull11a4a0c2018-12-29 11:38:31 +00001/*
Andrew Walbran692b3252019-03-07 15:51:31 +00002 * Copyright 2018 The Hafnium Authors.
Andrew Scull11a4a0c2018-12-29 11:38:31 +00003 *
Andrew Walbrane959ec12020-06-17 15:01:09 +01004 * Use of this source code is governed by a BSD-style
5 * license that can be found in the LICENSE file or at
6 * https://opensource.org/licenses/BSD-3-Clause.
Andrew Scull11a4a0c2018-12-29 11:38:31 +00007 */
8
Andrew Scull9a6384b2019-01-02 12:08:40 +00009#include "hf/arch/cpu.h"
Andrew Scull11a4a0c2018-12-29 11:38:31 +000010
Fuad Tabba5c738432019-12-02 11:02:42 +000011#include "hf/cpu.h"
Andrew Walbranb5ab43c2020-04-30 11:32:54 +010012#include "hf/ffa.h"
Madhukar Pappireddy2185d0b2021-08-03 12:12:48 -050013#include "hf/plat/interrupts.h"
Andrew Walbrand4d2fa12019-10-01 16:47:25 +010014
Andrew Scull11a4a0c2018-12-29 11:38:31 +000015void arch_irq_disable(void)
16{
17 /* TODO */
18}
19
20void arch_irq_enable(void)
21{
22 /* TODO */
23}
24
Fuad Tabba5c738432019-12-02 11:02:42 +000025void arch_regs_reset(struct vcpu *vcpu)
Andrew Scull11a4a0c2018-12-29 11:38:31 +000026{
27 /* TODO */
Fuad Tabba5c738432019-12-02 11:02:42 +000028 (void)vcpu;
Andrew Scull11a4a0c2018-12-29 11:38:31 +000029}
30
31void arch_regs_set_pc_arg(struct arch_regs *r, ipaddr_t pc, uintreg_t arg)
32{
33 (void)pc;
Andrew Walbranf65cfa22019-12-05 11:38:18 +000034 r->arg[0] = arg;
Andrew Scull11a4a0c2018-12-29 11:38:31 +000035}
36
J-Alvesb7800a12022-01-25 17:55:53 +000037bool arch_regs_reg_num_valid(const unsigned int gp_reg_num)
38{
39 (void)gp_reg_num;
40 return false;
41}
42
43void arch_regs_set_gp_reg(struct arch_regs *r, uintreg_t value,
44 const unsigned int gp_reg_num)
45{
46 (void)r;
47 (void)value;
48 (void)gp_reg_num;
49}
50
Andrew Walbranb5ab43c2020-04-30 11:32:54 +010051void arch_regs_set_retval(struct arch_regs *r, struct ffa_value v)
Andrew Scull11a4a0c2018-12-29 11:38:31 +000052{
Andrew Walbranf65cfa22019-12-05 11:38:18 +000053 r->arg[0] = v.func;
54 r->arg[1] = v.arg1;
55 r->arg[2] = v.arg2;
56 r->arg[3] = v.arg3;
57 r->arg[4] = v.arg4;
58 r->arg[5] = v.arg5;
59 r->arg[6] = v.arg6;
60 r->arg[7] = v.arg7;
Andrew Scull11a4a0c2018-12-29 11:38:31 +000061}
Olivier Depreze6f7b9d2021-02-01 11:55:48 +010062
63void arch_cpu_init(struct cpu *c, ipaddr_t entry_point)
64{
65 (void)c;
66 (void)entry_point;
Madhukar Pappireddy72454a12021-08-03 12:21:46 -050067
68 plat_interrupts_controller_hw_init(c);
Olivier Depreze6f7b9d2021-02-01 11:55:48 +010069}