avionic design with actual uboot and tooling
submodule of avionic design uboot bootloader and with included tools to get you started , read readme.md and readme-tk1-loader.md
This commit is contained in:
243
u-boot/arch/blackfin/include/asm/entry.h
Normal file
243
u-boot/arch/blackfin/include/asm/entry.h
Normal file
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
* entry.h - routines for context saving and restoring (for interrupts/exceptions)
|
||||
*
|
||||
* Copyright (c) 2005-2007 Analog Devices Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __BLACKFIN_ENTRY_H
|
||||
#define __BLACKFIN_ENTRY_H
|
||||
#ifdef __ASSEMBLY__
|
||||
|
||||
#define SAVE_ALL_INT save_context_no_interrupts
|
||||
#define SAVE_ALL_SYS save_context_no_interrupts
|
||||
#define SAVE_CONTEXT save_context_with_interrupts
|
||||
|
||||
#define RESTORE_ALL restore_context_no_interrupts
|
||||
#define RESTORE_ALL_SYS restore_context_no_interrupts
|
||||
#define RESTORE_CONTEXT restore_context_with_interrupts
|
||||
|
||||
/*
|
||||
* Code to save processor context.
|
||||
* We even save the register which are preserved by a function call
|
||||
* - r4, r5, r6, r7, p3, p4, p5
|
||||
*/
|
||||
.macro save_context_with_interrupts
|
||||
[--sp] = R0;
|
||||
[--sp] = ( R7:0, P5:0 );
|
||||
[--sp] = fp;
|
||||
[--sp] = usp;
|
||||
|
||||
[--sp] = i0;
|
||||
[--sp] = i1;
|
||||
[--sp] = i2;
|
||||
[--sp] = i3;
|
||||
|
||||
[--sp] = m0;
|
||||
[--sp] = m1;
|
||||
[--sp] = m2;
|
||||
[--sp] = m3;
|
||||
|
||||
[--sp] = l0;
|
||||
[--sp] = l1;
|
||||
[--sp] = l2;
|
||||
[--sp] = l3;
|
||||
|
||||
[--sp] = b0;
|
||||
[--sp] = b1;
|
||||
[--sp] = b2;
|
||||
[--sp] = b3;
|
||||
[--sp] = a0.x;
|
||||
[--sp] = a0.w;
|
||||
[--sp] = a1.x;
|
||||
[--sp] = a1.w;
|
||||
|
||||
[--sp] = LC0;
|
||||
[--sp] = LC1;
|
||||
[--sp] = LT0;
|
||||
[--sp] = LT1;
|
||||
[--sp] = LB0;
|
||||
[--sp] = LB1;
|
||||
|
||||
[--sp] = ASTAT;
|
||||
|
||||
[--sp] = r0; /* Skip reserved */
|
||||
[--sp] = RETS;
|
||||
[--sp] = RETI;
|
||||
[--sp] = RETX;
|
||||
[--sp] = RETN;
|
||||
[--sp] = RETE;
|
||||
[--sp] = SEQSTAT;
|
||||
[--sp] = SYSCFG;
|
||||
#ifdef CONFIG_CMD_KGDB
|
||||
p0.l = lo(IPEND)
|
||||
p0.h = hi(IPEND)
|
||||
r0 = [p0];
|
||||
#endif
|
||||
[--sp] = r0; /* Skip IPEND as well. */
|
||||
.endm
|
||||
|
||||
.macro save_context_no_interrupts
|
||||
[--sp] = R0;
|
||||
[--sp] = ( R7:0, P5:0 );
|
||||
[--sp] = fp;
|
||||
[--sp] = usp;
|
||||
|
||||
[--sp] = i0;
|
||||
[--sp] = i1;
|
||||
[--sp] = i2;
|
||||
[--sp] = i3;
|
||||
|
||||
[--sp] = m0;
|
||||
[--sp] = m1;
|
||||
[--sp] = m2;
|
||||
[--sp] = m3;
|
||||
|
||||
[--sp] = l0;
|
||||
[--sp] = l1;
|
||||
[--sp] = l2;
|
||||
[--sp] = l3;
|
||||
|
||||
[--sp] = b0;
|
||||
[--sp] = b1;
|
||||
[--sp] = b2;
|
||||
[--sp] = b3;
|
||||
[--sp] = a0.x;
|
||||
[--sp] = a0.w;
|
||||
[--sp] = a1.x;
|
||||
[--sp] = a1.w;
|
||||
|
||||
[--sp] = LC0;
|
||||
[--sp] = LC1;
|
||||
[--sp] = LT0;
|
||||
[--sp] = LT1;
|
||||
[--sp] = LB0;
|
||||
[--sp] = LB1;
|
||||
|
||||
[--sp] = ASTAT;
|
||||
|
||||
[--sp] = r0; /* Skip reserved */
|
||||
[--sp] = RETS;
|
||||
r0 = RETI;
|
||||
[--sp] = r0;
|
||||
[--sp] = RETX;
|
||||
[--sp] = RETN;
|
||||
[--sp] = RETE;
|
||||
[--sp] = SEQSTAT;
|
||||
[--sp] = SYSCFG;
|
||||
#ifdef CONFIG_CMD_KGDB
|
||||
p0.l = lo(IPEND)
|
||||
p0.h = hi(IPEND)
|
||||
r0 = [p0];
|
||||
#endif
|
||||
[--sp] = r0; /* Skip IPEND as well. */
|
||||
.endm
|
||||
|
||||
.macro restore_context_no_interrupts
|
||||
sp += 4;
|
||||
SYSCFG = [sp++];
|
||||
SEQSTAT = [sp++];
|
||||
RETE = [sp++];
|
||||
RETN = [sp++];
|
||||
RETX = [sp++];
|
||||
r0 = [sp++];
|
||||
RETI = r0;
|
||||
RETS = [sp++];
|
||||
|
||||
sp += 4;
|
||||
|
||||
ASTAT = [sp++];
|
||||
|
||||
LB1 = [sp++];
|
||||
LB0 = [sp++];
|
||||
LT1 = [sp++];
|
||||
LT0 = [sp++];
|
||||
LC1 = [sp++];
|
||||
LC0 = [sp++];
|
||||
|
||||
a1.w = [sp++];
|
||||
a1.x = [sp++];
|
||||
a0.w = [sp++];
|
||||
a0.x = [sp++];
|
||||
b3 = [sp++];
|
||||
b2 = [sp++];
|
||||
b1 = [sp++];
|
||||
b0 = [sp++];
|
||||
|
||||
l3 = [sp++];
|
||||
l2 = [sp++];
|
||||
l1 = [sp++];
|
||||
l0 = [sp++];
|
||||
|
||||
m3 = [sp++];
|
||||
m2 = [sp++];
|
||||
m1 = [sp++];
|
||||
m0 = [sp++];
|
||||
|
||||
i3 = [sp++];
|
||||
i2 = [sp++];
|
||||
i1 = [sp++];
|
||||
i0 = [sp++];
|
||||
|
||||
sp += 4;
|
||||
fp = [sp++];
|
||||
|
||||
( R7 : 0, P5 : 0) = [ SP ++ ];
|
||||
sp += 4;
|
||||
.endm
|
||||
|
||||
.macro restore_context_with_interrupts
|
||||
sp += 4;
|
||||
SYSCFG = [sp++];
|
||||
SEQSTAT = [sp++];
|
||||
RETE = [sp++];
|
||||
RETN = [sp++];
|
||||
RETX = [sp++];
|
||||
RETI = [sp++];
|
||||
RETS = [sp++];
|
||||
|
||||
sp += 4;
|
||||
|
||||
ASTAT = [sp++];
|
||||
|
||||
LB1 = [sp++];
|
||||
LB0 = [sp++];
|
||||
LT1 = [sp++];
|
||||
LT0 = [sp++];
|
||||
LC1 = [sp++];
|
||||
LC0 = [sp++];
|
||||
|
||||
a1.w = [sp++];
|
||||
a1.x = [sp++];
|
||||
a0.w = [sp++];
|
||||
a0.x = [sp++];
|
||||
b3 = [sp++];
|
||||
b2 = [sp++];
|
||||
b1 = [sp++];
|
||||
b0 = [sp++];
|
||||
|
||||
l3 = [sp++];
|
||||
l2 = [sp++];
|
||||
l1 = [sp++];
|
||||
l0 = [sp++];
|
||||
|
||||
m3 = [sp++];
|
||||
m2 = [sp++];
|
||||
m1 = [sp++];
|
||||
m0 = [sp++];
|
||||
|
||||
i3 = [sp++];
|
||||
i2 = [sp++];
|
||||
i1 = [sp++];
|
||||
i0 = [sp++];
|
||||
|
||||
sp += 4;
|
||||
fp = [sp++];
|
||||
|
||||
( R7 : 0, P5 : 0) = [ SP ++ ];
|
||||
sp += 4;
|
||||
.endm
|
||||
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user