summaryrefslogtreecommitdiff
path: root/chip/mchp/lfw/ec_lfw.h
blob: 8d9da760a7e5cb47f13b4fdbd81e637097b47ce2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* Copyright 2017 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 *
 * MCHP MEC SoC little FW
 *
 */

/* Why naked?  This is dangerous except for
 * function/ISR wrappers using inline assembly.
 * lfw_main() makes many calls and has one local variable.
 * Naked C functions should not use local data unless the local
 * data can fit in CPU registers.
 * Note other C functions called by lfw_main() are not marked naked and
 * do include compiler generated prolog and epilog code.
 * We also do not know how much stack space is available when
 * EC_RO calls lfw_main().
 *
void lfw_main(void) __attribute__ ((noreturn, naked));
*/
void lfw_main(void) __attribute__ ((noreturn));
void fault_handler(void) __attribute__((naked));

/*
 * Defined in linker file ec_lfw.ld
 */
extern uint32_t lfw_stack_top[];

struct int_vector_t {
	void   *stack_ptr;
	void   *reset_vector;
	void   *nmi;
	void   *hard_fault;
	void   *bus_fault;
	void   *usage_fault;
};

#define SPI_CHUNK_SIZE			1024