swh:1:snp:3c665ee4f67729f27f2e40193ab88e7298cf0fef
Tip revision: 9e82bf014195d6f0054982c463575cdce24292be authored by Linus Torvalds on 15 September 2014, 00:50:12 UTC
Linux 3.17-rc5
Linux 3.17-rc5
Tip revision: 9e82bf0
tbidspram.S
/*
* tbidspram.S
*
* Copyright (C) 2009, 2012 Imagination Technologies.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* Explicit state save and restore routines forming part of the thread binary
* interface for META processors
*/
.file "tbidspram.S"
/* These aren't generally useful to a user so for now, they arent publically available */
#define _TBIECH_DSPRAM_DUA_S 8
#define _TBIECH_DSPRAM_DUA_BITS 0x7f00
#define _TBIECH_DSPRAM_DUB_S 0
#define _TBIECH_DSPRAM_DUB_BITS 0x007f
/*
* void *__TBIDspramSaveA( short DspramSizes, void *pExt )
*/
.text
.balign 4
.global ___TBIDspramSaveA
.type ___TBIDspramSaveA,function
___TBIDspramSaveA:
SETL [A0StP++], D0.5, D1.5
MOV A0.3, D0Ar2
/* D1Ar1 - Dspram Sizes
* A0.4 - Pointer to buffer
*/
/* Save the specified amount of dspram DUA */
DL MOV D0AR.0, #0
LSR D1Ar1, D1Ar1, #_TBIECH_DSPRAM_DUA_S
AND D1Ar1, D1Ar1, #(_TBIECH_DSPRAM_DUA_BITS >> _TBIECH_DSPRAM_DUA_S)
SUB TXRPT, D1Ar1, #1
$L1:
DL MOV D0Re0, [D0AR.0++]
DL MOV D0Ar6, [D0AR.0++]
DL MOV D0Ar4, [D0AR.0++]
DL MOV D0.5, [D0AR.0++]
MSETL [A0.3++], D0Re0, D0Ar6, D0Ar4, D0.5
BR $L1
GETL D0.5, D1.5, [--A0StP]
MOV PC, D1RtP
.size ___TBIDspramSaveA,.-___TBIDspramSaveA
/*
* void *__TBIDspramSaveB( short DspramSizes, void *pExt )
*/
.balign 4
.global ___TBIDspramSaveB
.type ___TBIDspramSaveB,function
___TBIDspramSaveB:
SETL [A0StP++], D0.5, D1.5
MOV A0.3, D0Ar2
/* D1Ar1 - Dspram Sizes
* A0.3 - Pointer to buffer
*/
/* Save the specified amount of dspram DUA */
DL MOV D0BR.0, #0
LSR D1Ar1, D1Ar1, #_TBIECH_DSPRAM_DUB_S
AND D1Ar1, D1Ar1, #(_TBIECH_DSPRAM_DUB_BITS >> _TBIECH_DSPRAM_DUB_S)
SUB TXRPT, D1Ar1, #1
$L2:
DL MOV D0Re0, [D0BR.0++]
DL MOV D0Ar6, [D0BR.0++]
DL MOV D0Ar4, [D0BR.0++]
DL MOV D0.5, [D0BR.0++]
MSETL [A0.3++], D0Re0, D0Ar6, D0Ar4, D0.5
BR $L2
GETL D0.5, D1.5, [--A0StP]
MOV PC, D1RtP
.size ___TBIDspramSaveB,.-___TBIDspramSaveB
/*
* void *__TBIDspramRestoreA( short DspramSizes, void *pExt )
*/
.balign 4
.global ___TBIDspramRestoreA
.type ___TBIDspramRestoreA,function
___TBIDspramRestoreA:
SETL [A0StP++], D0.5, D1.5
MOV A0.3, D0Ar2
/* D1Ar1 - Dspram Sizes
* A0.3 - Pointer to buffer
*/
/* Restore the specified amount of dspram DUA */
DL MOV D0AW.0, #0
LSR D1Ar1, D1Ar1, #_TBIECH_DSPRAM_DUA_S
AND D1Ar1, D1Ar1, #(_TBIECH_DSPRAM_DUA_BITS >> _TBIECH_DSPRAM_DUA_S)
SUB TXRPT, D1Ar1, #1
$L3:
MGETL D0Re0, D0Ar6, D0Ar4, D0.5, [A0.3++]
DL MOV [D0AW.0++], D0Re0
DL MOV [D0AW.0++], D0Ar6
DL MOV [D0AW.0++], D0Ar4
DL MOV [D0AW.0++], D0.5
BR $L3
GETL D0.5, D1.5, [--A0StP]
MOV PC, D1RtP
.size ___TBIDspramRestoreA,.-___TBIDspramRestoreA
/*
* void *__TBIDspramRestoreB( short DspramSizes, void *pExt )
*/
.balign 4
.global ___TBIDspramRestoreB
.type ___TBIDspramRestoreB,function
___TBIDspramRestoreB:
SETL [A0StP++], D0.5, D1.5
MOV A0.3, D0Ar2
/* D1Ar1 - Dspram Sizes
* A0.3 - Pointer to buffer
*/
/* Restore the specified amount of dspram DUA */
DL MOV D0BW.0, #0
LSR D1Ar1, D1Ar1, #_TBIECH_DSPRAM_DUB_S
AND D1Ar1, D1Ar1, #(_TBIECH_DSPRAM_DUB_BITS >> _TBIECH_DSPRAM_DUB_S)
SUB TXRPT, D1Ar1, #1
$L4:
MGETL D0Re0, D0Ar6, D0Ar4, D0.5, [A0.3++]
DL MOV [D0BW.0++], D0Re0
DL MOV [D0BW.0++], D0Ar6
DL MOV [D0BW.0++], D0Ar4
DL MOV [D0BW.0++], D0.5
BR $L4
GETL D0.5, D1.5, [--A0StP]
MOV PC, D1RtP
.size ___TBIDspramRestoreB,.-___TBIDspramRestoreB
/*
* End of tbidspram.S
*/