| ; OpenRISC 1000 architecture. -*- Scheme -*- | |
| ; Copyright 2000-2019 Free Software Foundation, Inc. | |
| ; Contributed for OR32 by Johan Rydberg, jrydberg@opencores.org | |
| ; Modified by Julius Baxter, juliusbaxter@gmail.com | |
| ; Modified by Peter Gavin, pgavin@gmail.com | |
| ; Modified by Andrey Bacherov, avbacherov@opencores.org | |
| ; | |
| ; This program 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. | |
| ; | |
| ; This program 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 this program; if not, see <http://www.gnu.org/licenses/> | |
| (include "simplify.inc") | |
| ; The OpenRISC family is a set of RISC microprocessor architectures with an | |
| ; emphasis on scalability and is targetted at embedded use. | |
| ; The CPU RTL development is a collaborative open source effort. | |
| ; http://opencores.org/or1k | |
| ; http://openrisc.net | |
| (define-arch | |
| (name or1k) | |
| (comment "OpenRISC 1000") | |
| (default-alignment aligned) | |
| (insn-lsb0? #t) | |
| (machs or32 or32nd) | |
| (isas openrisc) | |
| ) | |
| ; Instruction set parameters. | |
| (define-isa | |
| ; Name of the ISA. | |
| (name openrisc) | |
| ; Base insturction length. The insns are always 32 bits wide. | |
| (base-insn-bitsize 32) | |
| ) | |
| (define-pmacro OR32-MACHS or32,or32nd) | |
| (define-pmacro ORBIS-MACHS or32,or32nd) | |
| (define-pmacro ORFPX32-MACHS or32,or32nd) | |
| (define-pmacro ORFPX64A32-MACHS or32,or32nd) ; float64 for 32-bit machs | |
| (define-attr | |
| (for model) | |
| (type boolean) | |
| (name NO-DELAY-SLOT) | |
| (comment "does not have delay slots") | |
| ) | |
| (if (keep-mach? (or32 or32nd)) | |
| (begin | |
| (define-cpu | |
| (name or1k32bf) | |
| (comment "OpenRISC 1000 32-bit CPU family") | |
| (insn-endian big) | |
| (data-endian big) | |
| (word-bitsize 32) | |
| (file-transform "") | |
| ) | |
| (define-mach | |
| (name or32) | |
| (comment "Generic OpenRISC 1000 32-bit CPU") | |
| (cpu or1k32bf) | |
| (bfd-name "or1k") | |
| ) | |
| (define-mach | |
| (name or32nd) | |
| (comment "Generic OpenRISC 1000 32-bit CPU with no branch delay slot") | |
| (cpu or1k32bf) | |
| (bfd-name "or1knd") | |
| ) | |
| ; OpenRISC 1200 - 32-bit or1k CPU implementation | |
| (define-model | |
| (name or1200) (comment "OpenRISC 1200 model") | |
| (attrs) | |
| (mach or32) | |
| (unit u-exec "Execution Unit" () 1 1 () () () ()) | |
| ) | |
| ; OpenRISC 1200 - 32-bit or1k CPU implementation | |
| (define-model | |
| (name or1200nd) (comment "OpenRISC 1200 model with no branch delay slot") | |
| (attrs NO-DELAY-SLOT) | |
| (mach or32nd) | |
| (unit u-exec "Execution Unit" () 1 1 () () () ()) | |
| ) | |
| ) | |
| ) | |
| (include "or1kcommon.cpu") | |
| (include "or1korbis.cpu") | |
| (include "or1korfpx.cpu") |