mirror of
https://github.com/kelvinlawson/atomthreads.git
synced 2026-01-11 18:33:16 +01:00
Completely untested. Shouldn't be merged to master. Signed-off-by: Himanshu Chauhan <hschauhan@nulltrace.org>
149 lines
4.9 KiB
C
149 lines
4.9 KiB
C
/*
|
|
* Copyright (c) 2010, Atomthreads Project. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. No personal names or organizations' names associated with the
|
|
* Atomthreads project may be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE ATOMTHREADS PROJECT AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef __ATOMPORT_PRIVATE_H_
|
|
#define __ATOMPORT_PRIVATE_H_
|
|
|
|
#define zero $0
|
|
#define at $1
|
|
#define v0 $2
|
|
#define v1 $3
|
|
#define a0 $4
|
|
#define a1 $5
|
|
#define a2 $6
|
|
#define a3 $7
|
|
#define t0 $8
|
|
#define t1 $9
|
|
#define t2 $10
|
|
#define t3 $11
|
|
#define t4 $12
|
|
#define t5 $13
|
|
#define t6 $14
|
|
#define t7 $15
|
|
#define t8 $24
|
|
#define t9 $25
|
|
#define s0 $16
|
|
#define s1 $17
|
|
#define s2 $18
|
|
#define s3 $19
|
|
#define s4 $20
|
|
#define s5 $21
|
|
#define s6 $22
|
|
#define s7 $23
|
|
#define k0 $26
|
|
#define k1 $27
|
|
#define gp $28
|
|
#define sp $29
|
|
#define s8 $30
|
|
#define fp $30
|
|
#define ra $31
|
|
|
|
#define NUM_REGISTERS 32
|
|
#define WORD_SIZE 4
|
|
|
|
#define v0_IDX 0
|
|
#define v1_IDX 1
|
|
#define a0_IDX 2
|
|
#define a1_IDX 3
|
|
#define a2_IDX 4
|
|
#define a3_IDX 5
|
|
#define t0_IDX 6
|
|
#define t1_IDX 7
|
|
#define t2_IDX 8
|
|
#define t3_IDX 9
|
|
#define t4_IDX 10
|
|
#define t5_IDX 11
|
|
#define t6_IDX 12
|
|
#define t7_IDX 13
|
|
#define s0_IDX 14
|
|
#define s1_IDX 15
|
|
#define s2_IDX 16
|
|
#define s3_IDX 17
|
|
#define s4_IDX 18
|
|
#define s5_IDX 19
|
|
#define s6_IDX 20
|
|
#define s7_IDX 21
|
|
#define t8_IDX 22
|
|
#define t9_IDX 23
|
|
#define sp_IDX 24
|
|
#define gp_IDX 25
|
|
#define s8_IDX 26
|
|
#define ra_IDX 27
|
|
#define k0_IDX 28
|
|
#define k1_IDX 29
|
|
#define at_IDX 30
|
|
#define zero_IDX 31
|
|
|
|
#define CP0_INDEX $0
|
|
#define CP0_RANDOM $1
|
|
#define CP0_ENTRYLO0 $2
|
|
#define CP0_ENTRYLO1 $3
|
|
#define CP0_CONTEXT $4
|
|
#define CP0_PAGEMASK $5
|
|
#define CP0_WIRED $6
|
|
#define CP0_HWRENA $7
|
|
#define CP0_BADVADDR $8
|
|
#define CP0_COUNT $9
|
|
#define CP0_ENTRYHI $10
|
|
#define CP0_COMPARE $11
|
|
#define CP0_STATUS $12
|
|
#define CP0_INTCTL $12,1
|
|
#define CP0_SRSCTL $12,2
|
|
#define CP0_SRSMAP $12,3
|
|
#define CP0_CAUSE $13
|
|
#define CP0_EPC $14
|
|
#define CP0_PRID $15
|
|
#define CP0_EBASE $15,1
|
|
#define CP0_CONFIG $16
|
|
#define CP0_CONFIG1 $16,1
|
|
#define CP0_CONFIG2 $16,2
|
|
#define CP0_CONFIG3 $16,3
|
|
#define CP0_LLADDR $17
|
|
#define CP0_WATCHLO $18
|
|
#define CP0_WATCHHI $19
|
|
#define CP0_DEBUG $23
|
|
#define CP0_DEPC $24
|
|
#define CP0_PERFCTL $25,0
|
|
#define CP0_PERFCNT $25,1
|
|
#define CP0_ECC $26
|
|
#define CP0_CACHEERR $27
|
|
#define CP0_TAGLO $28
|
|
#define CP0_DATALO $28,1
|
|
#define CP0_TAGHI $29
|
|
#define CP0_DATAHI $29,1
|
|
#define CP0_ERRORPC $30
|
|
|
|
#define SAVE_REG(addr, reg, val) \
|
|
sw reg, (reg ## _IDX * WORD_SIZE)(addr)
|
|
|
|
#define LOAD_REG(addr, reg, val) \
|
|
lw reg, (reg ## _IDX * WORD_SIZE)(addr)
|
|
|
|
#endif /* __ATOMPORT_PRIVATE_H_ */
|