summaryrefslogtreecommitdiff
path: root/chip/mchp/lfw/ec_lfw.h
blob: c989a3bc1bdf208eb1de77d334dec4049fc4020d (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
39
40
41
/* 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
 *
 */

#include <stdint.h>
#include <stdnoreturn.h>

/* 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().
 *
noreturn void lfw_main(void) __attribute__ ((naked));
*/
noreturn void lfw_main(void);
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