Simplify VM sources for old architectures

This commit is contained in:
Tim Angus committed 2025-08-07 15:10:24 +01:00
1 parent 93fd9f7d47
commit 2c91b38899
7 files changed
+1164 -1241

No files matched your search

+1089 -1
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-156
View File
@@ -1,156 +0,0 @@
/*
===========================================================================
Copyright (C) 2008 Przemyslaw Iskra <sparky@pld-linux.org>
This file is part of Quake III Arena source code.
Quake III Arena source code 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 2 of the License,
or (at your option) any later version.
Quake III Arena source code 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 Quake III Arena source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
===========================================================================
*/
#ifndef VM_POWERPC_ASM_H
#define VM_POWERPC_ASM_H
/*
* Register information according to:
* http://refspecs.freestandards.org/elf/elfspec_ppc.pdf
*/
#define r0 0 // volatile
#define r1 1 // caller safe ( stack pointer )
#define r2 2 // reserved
#define r3 3 // callee safe
#define r4 4 // callee safe
#define r5 5 // callee safe
#define r6 6 // callee safe
#define r7 7 // callee safe
#define r8 8 // callee safe
#define r9 9 // callee safe
#define r10 10 // callee safe
#define r11 11 // volatile
#define r12 12 // volatile
#define r13 13 // reserved ( small data area )
#define r14 14 // caller safe
#define r15 15 // caller safe
#define r16 16 // caller safe
#define r17 17 // caller safe
#define r18 18 // caller safe
#define r19 19 // caller safe
#define r20 20 // caller safe
#define r21 21 // caller safe
#define r22 22 // caller safe
#define r23 23 // caller safe
#define r24 24 // caller safe
#define r25 25 // caller safe
#define r26 26 // caller safe
#define r27 27 // caller safe
#define r28 28 // caller safe
#define r29 29 // caller safe
#define r30 30 // caller safe
#define r31 31 // caller safe ( environment pointers )
#define f0 0 // callee safe
#define f1 1 // callee safe
#define f2 2 // callee safe
#define f3 3 // callee safe
#define f4 4 // callee safe
#define f5 5 // callee safe
#define f6 6 // callee safe
#define f7 7 // callee safe
#define f8 8 // callee safe
#define f9 9 // callee safe
#define f10 10 // callee safe
#define f11 11 // callee safe
#define f12 12 // callee safe
#define f13 13 // callee safe
#define f14 14 // caller safe
#define f15 15 // caller safe
#define f16 16 // caller safe
#define f17 17 // caller safe
#define f18 18 // caller safe
#define f19 19 // caller safe
#define f20 20 // caller safe
#define f21 21 // caller safe
#define f22 22 // caller safe
#define f23 23 // caller safe
#define f24 24 // caller safe
#define f25 25 // caller safe
#define f26 26 // caller safe
#define f27 27 // caller safe
#define f28 28 // caller safe
#define f29 29 // caller safe
#define f30 30 // caller safe
#define f31 31 // caller safe
#define cr0 0 // volatile
#define cr1 1 // volatile
#define cr2 2 // caller safe
#define cr3 3 // caller safe
#define cr4 4 // caller safe
#define cr5 5 // volatile
#define cr6 6 // volatile
#define cr7 7 // volatile
#define lt 0
#define gt 1
#define eq 2
#define so 3
// branch bo field values
#define branchLikely 1
#define branchFalse 4
#define branchTrue 12
#define branchAlways 20
// branch extensions (change branch type)
#define branchExtLink 0x0001
/*
* This list must match exactly the powerpc_opcodes list from vm_powerpc_asm.c
* If you're changing the original list remember to regenerate this one. You
* may do so using this perl script:
perl -p -e 'BEGIN{%t=("-"=>m=>"+"=>p=>"."=>d=>);$l=""}$o=0 if/^}/;
if($o && s/^{ "(.*?)([\.+-])?".+/i\U$1\E$t{$2}/s){$_.="_" while$l{$_};
$l{$_}=1;if(length $l.$_ > 70){$s=$_;$_="\t$l\n";$l="$s,"}else
{$l.=" $_,";$_=undef}}else{$o=1 if/powerpc_opcodes.*=/;$_=undef};
END{print "\t$l\n"}' < vm_powerpc_asm.c
*/
typedef enum powerpc_iname {
iCMPLWI, iCMPWI, iCMPW, iCMPLW, iFCMPU, iLI, iLIS, iADDI, iADDIS,
iBLTm, iBC, iBCL, iB, iBL, iBLR, iBCTR, iBCTRL, iRLWINM, iNOP, iORI,
iXORIS, iLDX, iLWZX, iSLW, iAND, iSUB, iLBZX, iNEG, iNOT, iSTWX, iSTBX,
iMULLW, iADD, iLHZX, iXOR, iMFLR, iSTHX, iMR, iOR, iDIVWU, iMTLR,
iMTCTR, iDIVW, iLFSX, iSRW, iSTFSX, iSRAW, iEXTSH, iEXTSB, iLWZ, iLBZ,
iSTW, iSTWU, iSTB, iLHZ, iSTH, iLFS, iLFD, iSTFS, iSTFD, iLD, iFDIVS,
iFSUBS, iFADDS, iFMULS, iSTD, iSTDU, iFRSP, iFCTIWZ, iFSUB, iFNEG,
} powerpc_iname_t;
#include <stdint.h>
typedef uint32_t ppc_instruction_t;
extern ppc_instruction_t
asm_instruction( powerpc_iname_t, const int, const long int * );
#define IN( inst, args... ) \
({\
const long int argv[] = { args };\
const int argc = sizeof( argv ) / sizeof( argv[0] ); \
asm_instruction( inst, argc, argv );\
})
#endif
+74 -1
View File
@@ -31,7 +31,80 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include <stddef.h>
#include "vm_local.h"
#include "vm_sparc.h"
/* integer regs */
#define G0 0
#define G1 1
#define G2 2
#define G3 3
#define G4 4
#define G5 5
#define G6 6
#define G7 7
#define O0 8
#define O1 9
#define O2 10
#define O3 11
#define O4 12
#define O5 13
#define O6 14
#define O7 15
#define L0 16
#define L1 17
#define L2 18
#define L3 19
#define L4 20
#define L5 21
#define L6 22
#define L7 23
#define I0 24
#define I1 25
#define I2 26
#define I3 27
#define I4 28
#define I5 29
#define I6 30
#define I7 31
/* float regs */
#define F0 0
#define F1 1
#define F2 2
#define F3 3
#define F4 4
#define F5 5
#define F6 6
#define F7 7
#define F8 8
#define F9 9
#define F10 10
#define F11 11
#define F12 12
#define F13 13
#define F14 14
#define F15 15
#define F16 16
#define F17 17
#define F18 18
#define F19 19
#define F20 20
#define F21 21
#define F22 22
#define F23 23
#define F24 24
#define F25 25
#define F26 26
#define F27 27
#define F28 28
#define F29 29
#define F30 30
#define F31 31
/* state registers */
#define Y_REG 0
#define CCR_REG 2
#define ASI_REG 3
#define FPRS_REG 6
/* exit() won't be called but use it because it is marked with noreturn */
#define DIE( reason ) \
-78
View File
@@ -1,78 +0,0 @@
#ifndef VM_SPARC_H
#define VM_SPARC_H
/* integer regs */
#define G0 0
#define G1 1
#define G2 2
#define G3 3
#define G4 4
#define G5 5
#define G6 6
#define G7 7
#define O0 8
#define O1 9
#define O2 10
#define O3 11
#define O4 12
#define O5 13
#define O6 14
#define O7 15
#define L0 16
#define L1 17
#define L2 18
#define L3 19
#define L4 20
#define L5 21
#define L6 22
#define L7 23
#define I0 24
#define I1 25
#define I2 26
#define I3 27
#define I4 28
#define I5 29
#define I6 30
#define I7 31
/* float regs */
#define F0 0
#define F1 1
#define F2 2
#define F3 3
#define F4 4
#define F5 5
#define F6 6
#define F7 7
#define F8 8
#define F9 9
#define F10 10
#define F11 11
#define F12 12
#define F13 13
#define F14 14
#define F15 15
#define F16 16
#define F17 17
#define F18 18
#define F19 19
#define F20 20
#define F21 21
#define F22 22
#define F23 23
#define F24 24
#define F25 25
#define F26 26
#define F27 27
#define F28 28
#define F29 29
#define F30 30
#define F31 31
/* state registers */
#define Y_REG 0
#define CCR_REG 2
#define ASI_REG 3
#define FPRS_REG 6
#endif