d1297688a8
* include/linux/arm/syscall.h: Add support for M2-Planet. * lib/linux/arm-mes-m2/_exit.c, lib/linux/arm-mes-m2/_write.c, lib/linux/arm-mes-m2/crt1.M1, lib/linux/arm-mes-m2/crt1.c, lib/linux/arm-mes-m2/syscall.c, lib/m2/arm/ELF-arm.hex2, lib/m2/arm/arm_defs.M1: New files. * build-aux/build.sh.in: Also allow kaem build for ARM.
118 lines
2.3 KiB
Plaintext
118 lines
2.3 KiB
Plaintext
## Copyright (C) 2016 Jeremiah Orians
|
|
## This file is part of stage0.
|
|
##
|
|
## stage0 is free software: you can redistribute it and/or modify
|
|
## it under the terms of the GNU General Public License as published by
|
|
## the Free Software Foundation, either version 3 of the License, or
|
|
## (at your option) any later version.
|
|
##
|
|
## stage0 is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
##
|
|
## You should have received a copy of the GNU General Public License
|
|
## along with stage0. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# M2-Planet standards
|
|
DEFINE NULL 00000000
|
|
|
|
# Registers
|
|
DEFINE R0 0
|
|
DEFINE R1 1
|
|
DEFINE R2 2
|
|
DEFINE R3 3
|
|
DEFINE R4 4
|
|
DEFINE R5 5
|
|
DEFINE R6 6
|
|
DEFINE R7 7
|
|
DEFINE R8 8
|
|
DEFINE R9 9
|
|
DEFINE R10 A
|
|
DEFINE R11 B
|
|
DEFINE R12 C
|
|
DEFINE BP C
|
|
DEFINE R13 D
|
|
DEFINE SP D
|
|
DEFINE R14 E
|
|
DEFINE LR E
|
|
DEFINE R15 F
|
|
DEFINE PC F
|
|
|
|
# Register masks for push/pop16
|
|
DEFINE {R0} 0100
|
|
DEFINE {R1} 0200
|
|
DEFINE {R2} 0400
|
|
DEFINE {R3} 0800
|
|
DEFINE {R4} 1000
|
|
DEFINE {R11} 0008
|
|
DEFINE {BP} 0010
|
|
DEFINE {LR} 0040
|
|
|
|
# Bitshift constants
|
|
DEFINE NO_SHIFT 0
|
|
DEFINE LEFT 1
|
|
DEFINE RIGHT 3
|
|
DEFINE ARITH_RIGHT 5
|
|
|
|
# LOAD/STORE
|
|
DEFINE MEMORY E5
|
|
DEFINE STORE32 08
|
|
DEFINE STORE8 0C
|
|
DEFINE LOAD32 09
|
|
DEFINE LOAD8 0D
|
|
DEFINE LOADI8_ALWAYS 0A0E3
|
|
DEFINE LOADI8_G 0A0C3
|
|
DEFINE LOADI8_GE 0A0A3
|
|
DEFINE LOADI8_EQUAL 0A003
|
|
DEFINE LOADI8_NE 0A013
|
|
DEFINE LOADI8_LE 0A0D3
|
|
DEFINE LOADI8_L 0A0B3
|
|
DEFINE LOADI8_HI 0A083
|
|
DEFINE LOADI8_HS 0A023
|
|
DEFINE LOADI8_LS 0A093
|
|
DEFINE LOADI8_LO 0A033
|
|
|
|
# JUMP/BRANCH
|
|
DEFINE JUMP_ALWAYS EA
|
|
DEFINE JUMP_EQUAL 0A
|
|
DEFINE JUMP_NE 1A
|
|
DEFINE CALL_ALWAYS EB
|
|
DEFINE CALL_REG_ALWAYS FF2FE1
|
|
DEFINE RETURN FF2FE1
|
|
|
|
# Data movement
|
|
DEFINE MOVE_ALWAYS A0E1
|
|
DEFINE MVN_ALWAYS 0E0E1
|
|
DEFINE MVN_LT 0E0B1
|
|
DEFINE MVNI8_EQUAL 0E003
|
|
DEFINE PUSH_ALWAYS 2DE9
|
|
DEFINE POP_ALWAYS BDE8
|
|
|
|
# Arithmetic/logic
|
|
DEFINE AUX_ALWAYS E1
|
|
DEFINE IMM_ALWAYS E3
|
|
DEFINE ARITH_ALWAYS E2
|
|
DEFINE ARITH_GE A2
|
|
DEFINE ARITH_LT B2
|
|
DEFINE ARITH_NE 12
|
|
DEFINE ARITH2_ALWAYS E0
|
|
DEFINE ARITH2_GE A0
|
|
DEFINE ADC 0A
|
|
DEFINE ADCS 0B
|
|
DEFINE ADD 08
|
|
DEFINE ADDS 09
|
|
DEFINE AND 00
|
|
DEFINE CMP 005
|
|
DEFINE CMPI8 005
|
|
DEFINE MUL 0
|
|
DEFINE MULS 1
|
|
DEFINE OR 08
|
|
DEFINE SHIFT A0
|
|
DEFINE SUB 04
|
|
DEFINE RSUB 06
|
|
DEFINE XOR 02
|
|
|
|
# SYSCALL
|
|
DEFINE SYSCALL_ALWAYS 000000EF
|