From e967f581c2df1acbdba1cc6a9d4ebe2cc273d812 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 26 Jan 2021 17:14:42 +1000 Subject: [PATCH] Convert osMapTLBRdb to ASM --- Makefile | 10 +- src/include/PR/sys/asm.h | 704 +++++++++++++++++++++++++++++++++++ src/include/PR/sys/regdef.h | 104 ++++++ src/include/PR/ultratypes.h | 4 + src/include/asm_helper.h | 13 + src/include/sgidefs.h | 189 ++++++++++ src/lib/ultra/os/maptlbrdb.c | 29 -- src/lib/ultra/os/maptlbrdb.s | 29 ++ tools/irix/root/usr/bin/as | Bin 0 -> 275168 bytes 9 files changed, 1052 insertions(+), 30 deletions(-) create mode 100755 src/include/PR/sys/asm.h create mode 100755 src/include/PR/sys/regdef.h create mode 100644 src/include/asm_helper.h create mode 100755 src/include/sgidefs.h delete mode 100644 src/lib/ultra/os/maptlbrdb.c create mode 100644 src/lib/ultra/os/maptlbrdb.s create mode 100755 tools/irix/root/usr/bin/as diff --git a/Makefile b/Makefile index e6ee9e0a2..ea5ac7ce7 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ QEMU_IRIX ?= tools/irix/qemu-irix IRIX_ROOT ?= tools/irix/root IDOCC ?= $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc +IDOAS ?= $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/as ################################################################################ @@ -77,7 +78,10 @@ CFLAGS = -DVERSION=$(VERSION) \ $(MIPSISET) C_FILES := $(shell find src/gvars src/boot src/lib src/game src/inflate src/mpconfigs src/mpstrings/$(ROMID) src/firingrange src/filenames src/textureconfig -name '*.c') -O_FILES := $(patsubst src/%.c, $(B_DIR)/%.o, $(C_FILES)) +S_FILES := $(shell find src/boot src/lib src/game -name '*.s') + +O_FILES := $(patsubst src/%.c, $(B_DIR)/%.o, $(C_FILES)) \ + $(patsubst src/%.s, $(B_DIR)/%.o, $(S_FILES)) ASSET_AUDIO_FILES := Arecep01M Arecep02M Arecep03M Arecep04M Arecep05M Arecep06M Arlguard1M Arltech01M Arltech02M Arltech03M Arltech04M Arltech05M Arltech06M Ascie2aM Ascie2bM Ascie2cM Ascie2dM Ascie2eM Ascie2fM Ascie2gM Ascie3aM Ascie3bM Ascie3cM Ascie3dM Ascie3eM Ascie3gM Ascien10aM Ascien2_aM Ascien3_aM Ascien4_aM Ascien5_aM Ascien6_aM Ascien7_aM Ascien9_aM AvilgrimM Awepgd01M Awepgd02M Awepgd03M Awepsc01M Awepsc02M Awepsc03M Aa51elv01M Aa51elv02M Aa51elv03M Aa51grd01M Aa51grd02M Aa51grd03M Aa51grd04M Aa51grd05M Aa51grd06M Aa51grd07M Aa51grd08M Aa51grd09M Aa51grd10M Aa51jo1M Aa51jo2M Aa51jo3M Aa51jo4M Aa51jo5M Aa51jo6M Aa51jon01M Aa51jon02M Aa51jon03M Aa51jon04M Aa51jon05M Aa51jon06M Aa51jon07M Aa51jon08M Aa51jon09M Aa51jon10M Aa51jon11M Aa51jon12M Aa51jon14M Aa51jon15M Aa51sci1M Aaf1jo01M Aaf1jo02M Aaf1jo03M Aaf1pr01M Aaf1pr02M Aaf1pr03M Aaf1pr04M Aaf1pr05M Aaf1pr06M Aaf1pr07M Aaf1pr08M Aaf1pr09M Aaf1pr10M Aaf1tr01M Aaf1tr02M Aaf1tr03M Aairbgd01M Aairbgd02M Aairbgd03M Aairbgd04M Aairbgd05M Aairbgd06M Aairbgd07M Aairbgd08M Aairbgd09M Aairbgd10M Aairbgd11M Aairbgd12M Aairbgd13M Aairbgd14M Aairbgd15M Aairbgd16M Aairstw01M Aairstw02M Aairstw03M Aassael01M Aassael02M Aassael03M Aassael04M Aassael05M Aassael06M Absewrk01M Absewrk02M Absewrk03M Absewrk04M Absewrk05M Acetael01M Achdroid1M Achdroid2M Acsec01M Acsec02M Acsec03M Acstan1M Acstan2M Adevr01M Adevr02M Adevr03M Adevr04M Adevr05M Adevr06M Adevr07M Adevr08M Adevr09M Adevr10M Adevr11M Adevr12M Aexec01M Aexec02M Aexec04M Aexec05M Aexec06M Aexec07M Aexec08M Aexec09M Aexec10M Aexec11M Aexec12M Aexec13M Aexec14M Ahelic01M Ahelic02M Ahelic03M Ahologd01M AholohopkM Ainvcar01M Ainvcar02M Ainvcar03M Ainvcar04M Ainvcar05M Ainvcar06M Ainvcar07M Ainvcar08M Ainvcar09M Ainvcar10M Ainvcar11M Ainvcar12M AinvfarrM AinvfemaM AinvfostM AinvgrimM AinvhopkM AinvmaleM Ajoexec01M Ajoexec02M Ajosci01M Ajosci02M Ajosci03M Alabacc1M Alabacc2M Alabacc3M Alabacc4M Alabacc5M Alabacc6M Alabtech1M Alabtech2M Alabtech3M Alabtech5M Alabtech6M Alabtech7M Alabtech8M Alabtech9M Aoffwrk01M Aoffwrk02M Aoffwrk03M Aoffwrk04M Am1_l1_aM Am1_l1_bM Am1_l1_cM Am1_l1_dM Am1_l2_aM Am1_l2_bM Am1_l2_cM Am1_l2_dM Am1_l3_aM Am1_l3_bM Am1_l3_cM Am1_l3_dM Am2_l1_aM Am2_l1_bM Am2_l1_cM Am2_l1_dM Am3_l1_aM Am3_l1_bM Am3_l1_cM Am3_l1_dM Am3_l2_aM Am3_l2_bM Am3_l2_cM Am3_l2_dM Am4_l1_aM Am4_l1_bM Am4_l1_cM Am4_l1_dM Am4_l2_aM Am4_l2_bM Am4_l2_cM Am4_l2_dM Am4_l3_aM Am4_l3_bM Am4_l3_cM Am4_l3_dM Am5_l1_aM Am5_l1_bM Am5_l1_cM Am5_l1_dM Am5_l2_aM Am5_l2_bM Am5_l2_cM Am5_l2_dM Am5_l3_aM Am5_l3_bM Am5_l3_cM Am5_l3_dM Am6_l1_aM Am6_l1_bM Am6_l1_cM Am6_l1_dM Am6_l2_aM Am6_l2_bM Am6_l2_cM Am6_l2_dM Am7_l1_aM Am7_l1_bM Am7_l1_cM Am7_l1_dM Am8_l1_aM Am8_l1_bM Am8_l1_cM Am8_l1_dM Am9_l1_aM Am9_l1_bM Am9_l1_cM Am9_l1_dM Ap1_01_joM Ap1_02_caM Ap1_03_joM Ap1_04_caM Ap1_05_joM Ap1_06_caM Ap1_07_joM Ap1_08_caM Ap2_01_joM Ap2_02_joM Ap2_03_drM Ap2_04_joM Ap2_05_joM Ap2_06_drM Ap2_07_drM Ap3_01_gdM Ap3_02_joM Ap3_03_joM Ap4_01_dvM Ap4_02_joM Ap4_03_dvM Ap4_04_joM Ap4_05_dvM Ap4_06_joM Ap4_07_blM Ap4_08_dvM Ap4_09_dvM Ap5_01_joM Ap5_02_joM Ap5_03_joM Ap6_01_joM Ap6_02_caM Ap6_03_joM Ap6_04_caM Ap6_05_joM Ap6_06_caM Ap7_01_caM Ap7_02_joM Ap7_03_caM Ap7_04_joM Ap8_01_dvM Ap8_02_blM Ap8_03_dvM Ap8_04_blM Ap8_06_blM Ap8_07_trM Ap8_08_dvM Ap8_09_trM Ap8_10_blM Ap9_01_joM Ap9_02_caM Ap9_03_joM Ap10_01_caM Ap10_02_caM Ap10_03_caM Ap10_04_caM Ap10_05_joM Ap10_06_caM Ap10_07_joM Ap10_08_caM Ap10_09_joM Ap11_01_jnM Ap11_02_joM Ap11_03_jnM Ap11_04_joM Ap11_05_jnM Ap11_06_joM Ap11_07_jnM Ap11_08_joM Ap12_01_jnM Ap12_02_joM Ap12_03_jnM Ap12_04_joM Ap12_05_jnM Ap12_06_joM Ap12_07_jnM Ap12_08_joM Ap12_09_jnM Ap12_10_joM Ap13_01_joM Ap13_02_suM Ap13_03_joM Ap13_04_suM Ap13_06_suM Ap14_03_suM Ap14_04_joM Ap14_05_suM Ap14_07_joM Ap15_01_elM Ap15_02_elM Ap15_03_joM Ap15_04_jnM Ap15_05_elM Ap15_06_joM Ap15_07_elM Ap15_08_joM Ap15_09_elM Ap15_10_joM Ap15_11_elM Ap16_01_joM Ap16_02_caM Ap16_04_caM Ap16_05_joM Ap16_06_caM Ap17_01_trM Ap17_02_prM Ap17_03_trM Ap17_04_prM Ap17_05_trM Ap17_06_trM Ap18_01_joM Ap18_02_elM Ap18_03_elM Ap18_04_joM Ap18_05_elM Ap19_01_caM Ap19_02_caM Ap19_03_joM Ap19_04_caM Ap19_05_joM Ap19_06_joM Ap20_01_joM Ap20_02_prM Ap20_03_joM Ap20_04_prM Ap20_05_joM Ap20_06_blM Ap20_07_trM Ap20_08_trM Ap21_01_elM Ap21_02_joM Ap21_03_elM Ap21_04_joM Ap22_01_elM Ap22_02_joM Ap22_03_elM Ap22_04_joM Ap23_01_joM Ap23_02_drM Ap23_03_joM Ap23_04_drM Ap23_05_joM Ap23_06_drM Ap23_07_joM Ap23_08_drM Ap24_01_caM Ap24_02_joM Ap24_03_caM Ap24_04_joM Ap24_05_caM Ap24_06_caM Ap24_07_joM Ap24_08_joM Ap25_01_joM Ap25_02_joM Ap26_01_joM Ap26_02_dvM Ap26_03_joM Ap26_04_dvM Ap26_05_dvM Ap26_06_joM Ap26_07_dvM Ap26_08_dvM Ap27_01_joM Ap27_02_elM Ap27_03_elM Ap27_04_joM Ap27_05_joM Ap27_06_elM Ap28_01_elM Ap28_02_joM Ap28_03_elM Ap28_04_joM Ap28_05_elM Ap28_06_joM Ap29_01_elM Ap29_02_joM Ap29_03_elM Ap29_04_joM Ap29_05_joM Ap29_06_elM Ap29_07_joM Ap29_08_elM Ap29_09_joM Ap29_10_elM Apelelv01M Apelgrd01M Ap29_11_joM Am3l2carrM Aelvcet01M Aelvcet02M Ajorep01M Ajorep02M Ajorep03M Ajorep04M Ajorpld01M Ajorpld02M Ajorpld03M Ajorpld04M Atrjo01M Atrgrim01M Atrgrim02M Atrcarr06M Atrcarr07M Atrcarr08M Atrcarr01M Atrcarr02M Atrcarr03M Atrcarr04M Atrcarr05M Atrcarr12M Abnblde01M Abncass01M Apelelv02M Avault2M Ap29_12_elM Ap14_09_joM Ap19_07_joM Ap19_08_joM Acicarr06M Acicarr11M Acifarr08M Acifarr12M Acifema01M Acifema04M Acifema07M Acifema08M Acifema09M Acifema14M Acifost08M Acifost12M Acigrim05M Acigrim06M Acigrim07M Acigrim08M Acigrim09M Acigrim10M Acihopk09M Acihopk11M Acimale02M Acimale03M Acimale07M Acimale09M Acimale11M Acimale13M Aciroge08M Aciroge12M Atrfost01M Atrfost02M Atrfost03M Atrcarr09M Atrcarr10M Atrcarr11M Acifarr01M Acifarr02M Acifarr03M Acigrim01M Acigrim03M Acigrim04M Acihopk01M Acihopk04M Acihopk06M Aciroge01M Aciroge02M Atrroge01M Acicarr07M Acicarr08M Ajoinst01M Ajoinst02M Ajoinst03M Ajoinst04M Ap25_03_joM Ap29_13_joM Ap29_14_joM Acicarr09M Acicarr10M Ap29_15_joM Ap16_03_joM Acarrbye02M ASSET_CHR_FILES := Ca51guardZ Carea51guardZ CcarringtonZ CcassandraZ Cdark_combatZ Cdark_frockZ Cdark_trenchZ CddshockZ Cdd_secguardZ CdjbondZ CdrcarrollZ CelvisZ Celvis1Z CeyespyZ Cfem_guardZ ClabtechZ CmrblondeZ CofficeworkerZ Cofficeworker2Z CoverallZ CsecretaryZ CskedarZ CstripesZ CtestchrZ CthekingZ CtrentZ Cdd_labtechZ CconneryZ CmooreZ CdaltonZ Cheaddark_combatZ CheadelvisZ CheadrossZ CheadcarringtonZ CheadmrblondeZ CheadtrentZ CheadddshockZ CheadgrahamZ Cheaddark_frockZ CheadsecretaryZ CheadcassandraZ CheadthekingZ Cheadfem_guardZ CheadjonZ Cdark_rippedZ Cheadmark2Z CheadchristZ CheadrussZ CheadgreyZ CheaddarlingZ Cdd_guardZ CheadrobertZ Cdd_shockZ CheadbeauZ Cdd_shock_infZ Cheadfem_guard2Z CbiotechZ CfbiguyZ CciaguyZ Ca51trooperZ CheadbrianZ CheadjamieZ Cheadduncan2Z CheadbiotechZ Ca51airmanZ Cheadneil2Z CchicrobZ CstewardZ CheadedmcgZ CstewardessZ CheadankaZ CpresidentZ Cstewardess_coatZ Cheadleslie_sZ CminiskedarZ Cnsa_lackeyZ Cheadmatt_cZ Cpres_securityZ Cheadpeer_sZ CnegotiatorZ Cheadeileen_tZ Cg5_guardZ Cheadandy_rZ Cpelagic_guardZ Cg5_swat_guardZ Calaskan_guardZ Cmaian_soldierZ Cheadben_rZ Cheadsteve_kZ Cpresident_cloneZ CheadjonathanZ Cheadmaian_sZ Cdark_af1Z CheadshaunZ CdarkwetZ CdarkaqualungZ CdarksnowZ CdarklabZ CfemlabtechZ CddsniperZ Cpilotaf1Z CcilabtechZ CcifemtechZ Cheadeileen_hZ Cheadscott_hZ CcarreveningsuitZ CjonathonZ CcisoldierZ CheadsanchezZ CheaddarkaquaZ CheadddsniperZ CskedarkingZ CelviswaistcoatZ CheadgriffeyZ CheadmotoZ CheadkeithZ CheadwinnerZ Ca51faceplateZ Cheadelvis_gogsZ CheadstevemZ Cdark_leatherZ Cheaddark_snowZ CheadpresidentZ Chead_vdZ Cdark_negotiatorZ CheadtimZ CheadgrantZ CheadpennyZ CheadrobinZ CheadalexZ CheadjulianneZ CheadlauraZ CheaddavecZ CheadkenZ CheadjoelZ CheadcookZ CheadpryceZ CheadsilkeZ CheadsmithZ CheadgarethZ CheadmurchieZ CheadwongZ CheadcarterZ CheadtintinZ CheadmuntonZ CheadstamperZ CheadjonesZ CheadphelpsZ @@ -377,6 +381,10 @@ $(B_DIR)/%.o: src/%.c @mkdir -p $(dir $@) $(IDOCC) -c $(CFLAGS) $< -o $@ -O2 +$(B_DIR)/%.o: src/%.s + @mkdir -p $(dir $@) + $(IDOAS) $(CFLAGS) $< -o $@ -O2 + extract: ROMID=$(ROMID) tools/extract diff --git a/src/include/PR/sys/asm.h b/src/include/PR/sys/asm.h new file mode 100755 index 000000000..74e855719 --- /dev/null +++ b/src/include/PR/sys/asm.h @@ -0,0 +1,704 @@ +/************************************************************************** + * * + * Copyright (C) 1990, Silicon Graphics, Inc. * + * * + * These coded instructions, statements, and computer programs contain * + * unpublished proprietary information of Silicon Graphics, Inc., and * + * are protected by Federal copyright law. They may not be disclosed * + * to third parties or copied or duplicated in any form, in whole or * + * in part, without the prior written consent of Silicon Graphics, Inc. * + * * + **************************************************************************/ +/* + * Copyright 1985 by MIPS Computer Systems, Inc. + */ +#ifndef __SYS_ASM_H__ +#define __SYS_ASM_H__ + +#ident "$Revision: 3.33 $" + +#include "sgidefs.h" + +/* + * asm.h -- cpp definitions for assembler files + */ + +/* + * Notes on putting entry pt and frame info into symbol table for debuggers + * + * .ent name,lex-level # name is entry pt, lex-level is 0 for c + * name: # actual entry point + * .frame fp,framesize,saved_pc_reg + * # fp -- register which is pointer to base + * # of previous frame, debuggers are special + * # cased if "sp" to add "framesize" + * # (sp is usually used) + * # framesize -- size of frame + * # the expression: + * # new_sp + framesize == old_sp + * # should be true + * # saved_pc_reg -- either a register which + * # contains callers pc or $0, if $0 + * # saved pc is assumed to be in + * # (fp)+framesize-4 + * + * Notes regarding multiple entry points: + * LEAF is used when including the profiling header is appropriate + * XLEAF is used when the profiling header is in appropriate (e.g. + * when a entry point is known by multiple names, the profiling call + * should appear only once.) The correct ordering of ENTRY/XENTRY in this + * case is: + * LEAF(copyseg) # declare globl and emit profiling code + * XLEAF(copypage) # declare globl and alternate entry + */ +/* + * LEAF -- declare leaf routine + */ +#define LEAF(x) \ + .globl x; \ + .ent x,0; \ +x:; \ + .frame sp,0,ra + +/* + * XLEAF -- declare alternate entry to leaf routine + */ +#define XLEAF(x) \ + .globl x; \ + .aent x,0; \ +x: + +/* + * VECTOR -- declare exception routine entry + */ +#if _K32U32 +#define VECTOR(x, regmask) \ + .globl x; \ + .ent x,0; \ +x:; \ + .frame sp,EF_SIZE,$0; \ + .mask +(regmask)|M_EXCFRM,-(EF_SIZE-(EF_RA)) +#else +#define VECTOR(x, regmask) \ + .globl x; \ + .ent x,0; \ +x:; \ + .frame sp,EF_SIZE,$0; \ + .mask +(regmask)|M_EXCFRM,-(EF_SIZE-(EF_RA+4)) +#endif + +/* + * NESTED -- declare nested routine entry point + */ +#define NESTED(x, fsize, rpc) \ + .globl x; \ + .ent x,0; \ +x:; \ + .frame sp,fsize, rpc + +/* + * XNESTED -- declare alternate entry point to nested routine + */ +#define XNESTED(x) \ + .globl x; \ + .aent x,0; \ +x: + +/* + * END -- mark end of procedure + */ +#define END(proc) \ + .end proc + +/* + * IMPORT -- import external symbol + */ +#define IMPORT(sym, size) \ + .extern sym,size + +/* + * ABS -- declare absolute symbol + */ +#define ABS(x, y) \ + .globl x; \ +x = y + +/* + * EXPORT -- export definition of symbol + */ +#define EXPORT(x) \ + .globl x; \ +x: + +/* + * BSS -- allocate space in bss + */ +#define BSS(x,y) \ + .comm x,y + +/* + * LBSS -- allocate static space in bss + */ +#define LBSS(x,y) \ + .lcomm x,y + +/* + * Macros for writing PIC asm code + */ +#ifdef PIC +#define PICOPT .option pic2 + +/* + * Set gp when at 1st instruction + */ +#define SETUP_GP \ + .set noreorder; \ + .cpload t9; \ + .set reorder + +/* + * Set gp when not at 1st instruction + */ +#define SETUP_GPX(r) \ + .set noreorder; \ + move r, ra; /* save old ra */ \ + bal 10f; /* find addr of cpload */\ + nop; \ +10: \ + .cpload ra; \ + move ra, r; \ + .set reorder; + +#define SAVE_GP(x) \ + .cprestore x; /* save gp trigger t9/jalr conversion */ + +#else /* PIC */ + +#define PICOPT +#define SETUP_GP +#define SETUP_GPX(r) +#define SAVE_GP(x) + +#endif /* PIC */ + +/* + * Stack Frame Definitions + */ +#if (_MIPS_SIM == _MIPS_SIM_ABI32) +#define NARGSAVE 4 /* space for 4 arg regs must be allocated */ +#define ALSZ 7 /* align on 8 byte boundary */ +#define ALMASK ~7 +#endif +#if (_MIPS_SIM == _MIPS_SIM_ABI64) +#define NARGSAVE 0 /* no caller responsibilities */ +#define ALSZ 15 /* align on 16 byte boundary */ +#define ALMASK ~0xf +#endif + +#if _KERNEL +/* Round the size of a stack frame to fit compiler conventions. */ +#define FRAMESZ(size) (((size)+ALSZ) & ALMASK) +#endif + +#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2) +#define SZREG 4 +#endif + +#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4) +#define SZREG 8 +#endif + +/* + * The following macros reserve the usage of the local label '9' + * By convention the caller should put the return addr in a2 + * so that the stack backtrace can trace from a leaf + */ +#if defined(STANDALONE) || defined(LOCORE) +#define PANIC(msg) \ + sw zero,waittime; \ + la a0,9f; \ + jal panic; \ + MSG(msg) + +#define PRINTF(msg) \ + la a0,9f; \ + jal printf; \ + MSG(msg) + +#else /* the kernel */ +#define PANIC(msg) \ + li a0,CE_PANIC; \ + la a1,9f; \ + jal cmn_err; \ + MSG(msg) + +#define SPPANIC(msg) \ + /* make sure a good frame */\ + lw sp,VPDA_LBOOTSTACK(zero); \ + li a0,CE_PANIC; \ + la a1,9f; \ + jal cmn_err; \ + MSG(msg) + +#define ASMASSFAIL(msg) \ + la a0,9f; \ + la a1,lmsg; \ + move a2,zero; \ + j assfail; \ + MSG(msg) + +#define PRINTF(msg) \ + la a0,9f; \ + jal dprintf; \ + MSG(msg) + +#endif /* defined(STANDALONE) || defined(LOCORE) */ + +#define MSG(msg) \ + .data; \ +9: .asciiz msg; \ + .text + +#define SYSMAP(mname, vname, page, len) \ + .globl mname; \ +mname: \ + .space len*4; \ + .globl vname; \ +vname = ((page)*NBPG) + +#if !defined(_MIPSEB) && !defined(_MIPSEL) + .error Must define either _MIPSEB or _MIPSEL +#endif +#if defined(_MIPSEB) && defined(_MIPSEL) + .error Only one of _MIPSEB and _MIPSEL may be defined +#endif + +/* + * The following macros deal with the coprocessor 0 scheduling + * hazards, which are different for the R3000 and R4000. + * The first digit in the name refers to the number + * of NOPs in the R2000/R3000 case, while the second digit + * refers to the number of NOPs in the R4000 case. + * NOTE: For now use R4000 values for TFP too. This at least + * lets us make the kernel. + */ +#if R4000 +#define NOP_0_1 nop +#define NOP_0_2 nop; nop +#define NOP_0_3 nop; nop; nop +#define NOP_0_4 nop; nop; nop; nop +#define NOP_1_0 +#define NOP_1_1 nop +#define NOP_1_2 nop; nop +#define NOP_1_3 nop; nop; nop +#define NOP_1_4 nop; nop; nop; nop +#endif + +#if TFP +#define NOP_0_1 +#define NOP_0_2 +#define NOP_0_3 +#define NOP_0_4 +#define NOP_1_0 +#define NOP_1_1 NOP_SSNOP +#define NOP_1_2 NOP_SSNOP +#define NOP_1_3 NOP_SSNOP +#define NOP_1_4 NOP_SSNOP +/* TFP has the following kinds of nops: + * + * NOP_NOP regular old nop -- takes a dispatch slot, but another + * integer instruction could be issued with it. But since + * TFP has only one shifter, two consecutive NOP_NOPs would + * go in separate cycles + * NOP_SSNOP nop which breaks superscalar dispatch. Will be the last + * instruction issued in a cycle. Instruction following + * will be first instruction issued in next cycle. + * NOP_NADA more than one of these can be scheduled per cycle + * since it does not use the shifter + */ +#define NOP_NOP sll zero,zero,0 +#define NOP_SSNOP sll zero,zero,1 +#define NOP_NADA addu zero,zero,zero +/* + * The following hazards are intended to be the maximum needed so that we + * do not have to worry about the instructions which follow. You may make + * use of the actual restrictions in order to optimize the code. + * + * Theoretically, NOP_MFC1_HAZ and NOP_MTC1_HAZ should not be needed but they + * are here just in case. + * + * NOP_MFC0_HAZ hazard after loading from C0 + * NOP_MTC0_HAZ hazard after storing to C0 + * NOP_ERET_HAZ hazard before eret after storing C0 registers + * NOP_COM_HAZ hazard following a COM operation -- TLBW, TLBR, etc. + * NOP_MFC1_HAZ hazard after loading from C1 + * NOP_MTC1_HAZ hazard after storing to C1 + * + * Actual restrictions: + * MFC0 + * - two dmfc0 should not be executed in same cycle + * - a dmfc0 should not be issued in cycle following a dmtc0 + * MTC0 + * - in cycle after dmtc0 VAddr a COM will not correctly execute + * - in cycle after dmtc0 status a COM will not correctly execute + * - in same cycle as dmtc0 TLBSet a COM will not correctly execute + * - integer store should not be execute in same cycle as dmtc0 VAddr + * - two dmtc0 should not be executed in the same cycle + * - a dmfc0 should not be issued in cycle following a dmtc0 + * + * - there should be three SSNOPs following a MTC0 which + * is enabling/disabling interrupts in the SR before new mask is + * effective + * - there should be three SSNOPs between a MTC0 which enables a CU + * field (like the FP) before issuing an instruction which uses the + * the FP. + * COM + * - 2 cycles after a COM a memory instruction will not execute properly + * - a TLBR/DCTR followed by a dmfc0 of EntryHi/EntryLo/DCache should + * leave two cycles between TLBR and dmfc0 + * + * Additional restriction found executing kernel on RTL simulator: + *-------------------------------------------------------------------------- + * jr r31 + * dmtc0 r2,sr + * The jr happens to jump to 0x801b9204. However, the jal didn't store the + * proper value (pc + 8) into r31. + * The reason for this behavior is that mtc0's require an internal bus + * (MiscBus to be specific), in the W cycle. However, the jal also requires + * the MiscBus in its E cycle. Thus, the mux select lines for selecting + * the data to go into the GPR was incorrect. + * To make sure something like this won't occur again, it's probably a good + * idea not to have mtc0's in the delay slot, unless you are sure that the + * target quadword of instructions won't cause this internal bus collision. + *-------------------------------------------------------------------------- + */ +#define NOP_MFC0_HAZ NOP_SSNOP +#define NOP_MTC0_HAZ NOP_SSNOP; NOP_SSNOP; NOP_SSNOP; NOP_SSNOP +#define NOP_ERET_HAZ +#define NOP_COM_HAZ NOP_SSNOP; NOP_SSNOP; NOP_SSNOP; NOP_SSNOP +/* + * The NOP_MFC1_HAZ and NOP_MTC1_HAZ are here only due to paranoia. + * I am also defining DMFC1 and DMTC1 which use these macros (in ip21prom.h). + * All this will exist until there is established confidence in FPU. + */ +#define NOP_MFC1_HAZ NOP_SSNOP; NOP_SSNOP; NOP_SSNOP; NOP_SSNOP +#define NOP_MTC1_HAZ NOP_SSNOP; NOP_SSNOP; NOP_SSNOP; NOP_SSNOP +#endif + +#if R3000 +#define NOP_0_1 +#define NOP_0_2 +#define NOP_0_3 +#define NOP_0_4 +#define NOP_1_0 nop +#define NOP_1_1 nop +#define NOP_1_2 nop +#define NOP_1_3 nop +#define NOP_1_4 nop +#endif + +/* + * register mask bit definitions + */ +#define M_EXCFRM 0x00000001 +#define M_AT 0x00000002 +#define M_V0 0x00000004 +#define M_V1 0x00000008 +#define M_A0 0x00000010 +#define M_A1 0x00000020 +#define M_A2 0x00000040 +#define M_A3 0x00000080 +#define M_T0 0x00000100 +#define M_T1 0x00000200 +#define M_T2 0x00000400 +#define M_T3 0x00000800 +#define M_T4 0x00001000 +#define M_T5 0x00002000 +#define M_T6 0x00004000 +#define M_T7 0x00008000 +#define M_S0 0x00010000 +#define M_S1 0x00020000 +#define M_S2 0x00040000 +#define M_S3 0x00080000 +#define M_S4 0x00100000 +#define M_S5 0x00200000 +#define M_S6 0x00400000 +#define M_S7 0x00800000 +#define M_T8 0x01000000 +#define M_T9 0x02000000 +#define M_K0 0x04000000 +#define M_K1 0x08000000 +#define M_GP 0x10000000 +#define M_SP 0x20000000 +#define M_FP 0x40000000 +#define M_RA 0x80000000 + + +/* + * Macros for dealing with 64/32 bit asm files + */ + +/* + * Basic register save and restore + */ +#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2) +#define REG_L lw +#define REG_S sw +#endif + +#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4) +#define REG_L ld +#define REG_S sd +#endif + +#if (_MIPS_SZINT == 32) +#define INT_L lw +#define INT_S sw +#define INT_LLEFT lwl /* load left */ +#define INT_SLEFT swl /* store left */ +#define INT_LRIGHT lwr /* load right */ +#define INT_SRIGHT swr /* store right */ +#define INT_ADD add +#define INT_ADDI addi +#define INT_ADDIU addiu +#define INT_ADDU addu +#define INT_SUB sub +#define INT_SUBI subi +#define INT_SUBIU subiu +#define INT_SUBU subu +#define INT_SLL sll +#define INT_SRL srl +#define INT_SRA sra +#define INT_SLLV sllv +#define INT_SRLV srlv +#define INT_SRAV srav +#define INT_LL ll +#define INT_SC sc +#endif /* _MIPS_SZINT == 32 */ + +#if (_MIPS_SZINT == 64) +#define INT_L ld +#define INT_S sd +#define INT_LLEFT ldl /* load left */ +#define INT_SLEFT sdl /* store left */ +#define INT_LRIGHT ldr /* load right */ +#define INT_SRIGHT sdr /* store right */ +#define INT_ADD dadd +#define INT_ADDI daddi +#define INT_ADDIU daddiu +#define INT_ADDU daddu +#define INT_SUB dsub +#define INT_SUBI dsubi +#define INT_SUBIU dsubiu +#define INT_SUBU dsubu +#define INT_SLL dsll +#define INT_SRL dsrl +#define INT_SRA dsra +#define INT_SLLV dsllv +#define INT_SRLV dsrlv +#define INT_SRAV dsrav +#define INT_LL lld +#define INT_SC scd +#endif /* _MIPS_SZINT == 64 */ + +#if (_MIPS_SZLONG == 32) +#define LONG_L lw +#define LONG_S sw +#define LONG_LLEFT lwl /* load left */ +#define LONG_SLEFT swl /* store left */ +#define LONG_LRIGHT lwr /* load right */ +#define LONG_SRIGHT swr /* store right */ +#define LONG_ADD add +#define LONG_ADDI addi +#define LONG_ADDIU addiu +#define LONG_ADDU addu +#define LONG_SUB sub +#define LONG_SUBI subi +#define LONG_SUBIU subiu +#define LONG_SUBU subu +#define LONG_SLL sll +#define LONG_SRL srl +#define LONG_SRA sra +#define LONG_SLLV sllv +#define LONG_SRLV srlv +#define LONG_SRAV srav +#define LONG_LL ll +#define LONG_SC sc +#endif /* _MIPS_SZLONG == 32 */ + +#if (_MIPS_SZLONG == 64) +#define LONG_L ld +#define LONG_S sd +#define LONG_LLEFT ldl /* load left */ +#define LONG_SLEFT sdl /* store left */ +#define LONG_LRIGHT ldr /* load right */ +#define LONG_SRIGHT sdr /* store right */ +#define LONG_ADD dadd +#define LONG_ADDI daddi +#define LONG_ADDIU daddiu +#define LONG_ADDU daddu +#define LONG_SUB dsub +#define LONG_SUBI dsubi +#define LONG_SUBIU dsubiu +#define LONG_SUBU dsubu +#define LONG_SLL dsll +#define LONG_SRL dsrl +#define LONG_SRA dsra +#define LONG_SLLV dsllv +#define LONG_SRLV dsrlv +#define LONG_SRAV dsrav +#define LONG_LL lld +#define LONG_SC scd +#endif /* _MIPS_SZLONG == 64 */ + +#if (_MIPS_SZPTR == 32) +#define PTR_L lw +#define PTR_S sw +#define PTR_LLEFT lwl /* load left */ +#define PTR_SLEFT swl /* store left */ +#define PTR_LRIGHT lwr /* load right */ +#define PTR_SRIGHT swr /* store right */ +#define PTR_ADD add +#define PTR_ADDI addi +#define PTR_ADDIU addiu +#define PTR_ADDU addu +#define PTR_SUB sub +#define PTR_SUBI subi +#define PTR_SUBIU subiu +#define PTR_SUBU subu +#define PTR_SLL sll +#define PTR_SRL srl +#define PTR_SRA sra +#define PTR_SLLV sllv +#define PTR_SRLV srlv +#define PTR_SRAV srav +#define PTR_LL ll +#define PTR_SC sc + +#define PTR_WORD .word /* psuedo-op to reserve space for a ptr */ +#define PTR_SCALESHIFT 2 + +#define LI li +#define LA la +#endif /* _MIPS_SZPTR == 32 */ + +#if (_MIPS_SZPTR == 64) +#define PTR_L ld +#define PTR_S sd +#define PTR_LLEFT ldl /* load left */ +#define PTR_SLEFT sdl /* store left */ +#define PTR_LRIGHT ldr /* load right */ +#define PTR_SRIGHT sdr /* store right */ +#define PTR_ADD dadd +#define PTR_ADDI daddi +#define PTR_ADDIU daddiu +#define PTR_ADDU daddu +#define PTR_SUB dsub +#define PTR_SUBI dsubi +#define PTR_SUBIU dsubiu +#define PTR_SUBU dsubu +#define PTR_SLL dsll +#define PTR_SRL dsrl +#define PTR_SRA dsra +#define PTR_SLLV dsllv +#define PTR_SRLV dsrlv +#define PTR_SRAV dsrav +#define PTR_LL lld +#define PTR_SC scd + +#define PTR_WORD .dword /* psuedo-op to reserve space for a ptr */ +#define PTR_SCALESHIFT 3 + +#define LI dli +#define LA dla +#endif /* _MIPS_SZPTR == 64 */ + +#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2) +#define MFC0 mfc0 +#define MTC0 mtc0 +#endif + +#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4) +#define MFC0 dmfc0 +#define MTC0 dmtc0 +#endif +#if TFP +#define DMTC0(r,c) dmtc0 r,c; \ + NOP_MTC0_HAZ +#define DMFC0(c,r) dmfc0 c,r; \ + NOP_MFC0_HAZ +#if _K32U32 || _K32U64 + # This code only works for SABLE + # We need to avoid a tlbmiss on the PC address (our pseudo-K0 space) + # because such a fault destroys values loaded into BADVADDR, + # TLBHI, etc. +#define SABLE_GOTO_KP64(reg1,reg2) \ + lui reg2,0xa000; \ + dsll reg2,32; \ + la reg1,1f; \ + dsll reg1,35; \ + dsrl reg1,35; \ + dadd reg1,reg2; \ + NOP_SSNOP; \ + j reg1; \ + NOP_SSNOP; \ + NOP_SSNOP; \ +1: NOP_SSNOP \ + # Now we're executing in Kernel Physical (KP) space +#else +#define SABLE_GOTO_KP64(reg1,reg2) +#endif /* !_K32U32 && ! _K32U64 */ + +#endif /* TFP */ +#if R3000 || R4000 +/* These macros let us replace existing mtc0/mfc0 instructions with macros + * that have no additional overhead for non-TFP machines but have the required + * number of scheduling NOPS for TFP. + */ +#define DMTC0(r,c) mtc0 r,c +#define DMFC0(c,r) mfc0 c,r +#define SABLE_GOTO_KP64(reg1,reg2) +#endif /* R3000 || R4000 */ + +#if TFP_TLBCACHE_WAR +/* + * This problem occurs when there is an I-Cache miss within two cycles of + * a valid tlb or dct (data cache tag) instruction. If the previous contents + * of the I-Cache contained a store instruction, the data cache can be + * corrupted. + * + * This problem can be worked around by putting all tlb/dct instructions on a + * 16-byte boundary. And, the three instructions that follow the tlb/dct + * must be ssnops (super-scalar no-ops). This guarantees that for the two + * cycles following the tlb/dct instruction, there can only be noops in the + * pipeline. + */ +#define TLB_READ .align 4; \ + c0 C0_READ; \ + NOP_SSNOP; \ + NOP_SSNOP; \ + NOP_SSNOP +#define TLB_WRITER .align 4; \ + c0 C0_WRITER; \ + NOP_SSNOP; \ + NOP_SSNOP; \ + NOP_SSNOP +#define TLB_PROBE .align 4; \ + c0 C0_PROBE; \ + NOP_SSNOP; \ + NOP_SSNOP; \ + NOP_SSNOP +#else /* !TFP_TLBCACHE_WAR */ +#if TFP +#define TLB_READ c0 C0_READ; \ + NOP_COM_HAZ +#define TLB_WRITER c0 C0_WRITER; \ + NOP_COM_HAZ +#define TLB_PROBE c0 C0_PROBE; \ + NOP_COM_HAZ +#else +#define TLB_READ c0 C0_READ +#define TLB_WRITER c0 C0_WRITER +#endif +#endif /* !TFP_TLBCACHE_WAR */ +#endif /* __SYS_ASM_H__ */ diff --git a/src/include/PR/sys/regdef.h b/src/include/PR/sys/regdef.h new file mode 100755 index 000000000..8d319a2bc --- /dev/null +++ b/src/include/PR/sys/regdef.h @@ -0,0 +1,104 @@ +/************************************************************************** + * * + * Copyright (C) 1990-1992, Silicon Graphics, Inc. * + * * + * These coded instructions, statements, and computer programs contain * + * unpublished proprietary information of Silicon Graphics, Inc., and * + * are protected by Federal copyright law. They may not be disclosed * + * to third parties or copied or duplicated in any form, in whole or * + * in part, without the prior written consent of Silicon Graphics, Inc. * + * * + **************************************************************************/ +/* + * Copyright 1985 by MIPS Computer Systems, Inc. + */ +#ifndef __SYS_REGDEF_H__ +#define __SYS_REGDEF_H__ + +#ident "$Revision: 3.7 $" + +#include "sgidefs.h" + +#if (_MIPS_SIM == _MIPS_SIM_ABI32) +#define zero $0 /* wired zero */ +#define AT $at /* assembler temp */ +#define v0 $2 /* return value */ +#define v1 $3 +#define a0 $4 /* argument registers */ +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define t0 $8 /* caller saved */ +#define t1 $9 +#define t2 $10 +#define t3 $11 +#define t4 $12 /* caller saved - 32 bit env arg reg 64 bit */ +#define ta0 $12 /* caller saved in 32 bit - arg regs in 64 bit */ +#define t5 $13 +#define ta1 $13 +#define t6 $14 +#define ta2 $14 +#define t7 $15 +#define ta3 $15 +#define s0 $16 /* callee saved */ +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 /* code generator */ +#define t9 $25 +#define jp $25 /* PIC jump register */ +#define k0 $26 /* kernel temporary */ +#define k1 $27 +#define gp $28 /* global pointer */ +#define sp $29 /* stack pointer */ +#define fp $30 /* frame pointer */ +#define s8 $30 /* calle saved */ +#define ra $31 /* return address */ +#endif + +#if (_MIPS_SIM == _MIPS_SIM_ABI64) +#define zero $0 /* wired zero */ +#define AT $at /* assembler temp */ +#define v0 $2 /* return value - caller saved */ +#define v1 $3 +#define a0 $4 /* argument registers */ +#define a1 $5 +#define a2 $6 +#define a3 $7 +#define a4 $8 /* arg reg 64 bit; caller saved in 32 bit */ +#define ta0 $8 +#define a5 $9 +#define ta1 $9 +#define a6 $10 +#define ta2 $10 +#define a7 $11 +#define ta3 $11 +#define t0 $12 /* caller saved */ +#define t1 $13 +#define t2 $14 +#define t3 $15 +#define s0 $16 /* callee saved */ +#define s1 $17 +#define s2 $18 +#define s3 $19 +#define s4 $20 +#define s5 $21 +#define s6 $22 +#define s7 $23 +#define t8 $24 /* caller saved */ +#define t9 $25 /* callee address for PIC/temp */ +#define jp $25 /* PIC jump register */ +#define k0 $26 /* kernel temporary */ +#define k1 $27 +#define gp $28 /* global pointer - caller saved for PIC */ +#define sp $29 /* stack pointer */ +#define fp $30 /* frame pointer */ +#define s8 $30 /* callee saved */ +#define ra $31 /* return address */ +#endif + +#endif /* __SYS_REGDEF_H__ */ diff --git a/src/include/PR/ultratypes.h b/src/include/PR/ultratypes.h index 031f18964..f4c8a8ff0 100644 --- a/src/include/PR/ultratypes.h +++ b/src/include/PR/ultratypes.h @@ -12,6 +12,8 @@ #define OS_TV_NTSC 1 #define OS_TV_MPAL 2 +#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) + typedef signed char s8; typedef unsigned char u8; typedef signed short int s16; @@ -36,3 +38,5 @@ typedef double f64; typedef unsigned long size_t; #endif + +#endif diff --git a/src/include/asm_helper.h b/src/include/asm_helper.h new file mode 100644 index 000000000..61b5cfa4a --- /dev/null +++ b/src/include/asm_helper.h @@ -0,0 +1,13 @@ +#ifndef _ASM_HELPER_H +#define _ASM_HELPER_H +#include "PR/R4300.h" +#include "PR/sys/regdef.h" +#include "PR/sys/asm.h" +#include "PR/rcp.h" + +#define STAY1(stmnt) .set noreorder; stmnt; .set reorder; +#define STAY2(stmnt, arg1) .set noreorder; stmnt, arg1; .set reorder; +#define STAY3(stmnt, arg1, arg2) .set noreorder; stmnt, arg1, arg2; .set reorder; +#define NOP .set noreorder; nop; .set reorder; +#define CACHE(op, reg) .set noreorder; cache op, reg; .set reorder; +#endif diff --git a/src/include/sgidefs.h b/src/include/sgidefs.h new file mode 100755 index 000000000..bee627b86 --- /dev/null +++ b/src/include/sgidefs.h @@ -0,0 +1,189 @@ +/************************************************************************** + * * + * Copyright (C) 1991-1992 Silicon Graphics, Inc. * + * * + * These coded instructions, statements, and computer programs contain * + * unpublished proprietary information of Silicon Graphics, Inc., and * + * are protected by Federal copyright law. They may not be disclosed * + * to third parties or copied or duplicated in any form, in whole or * + * in part, without the prior written consent of Silicon Graphics, Inc. * + * * + **************************************************************************/ +#ifndef __SGIDEFS_H__ +#define __SGIDEFS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ident "$Revision: 1.5 $" + +/* + * sgidefs.h - SGI/MIPS basic software generation system constants & types + * + * This file MUST be includable in any language + * and in the 'C' case must be ANSI compliant + * In particular this means NO long long ... + * + * Constants and types defined here are to support + * multi-isa (instruction set architecture) coding + * + * Each catagory has a define that the compilation system will set + * based on the environment the compile is initiated in. Programs + * can test the define using the manifest constants defined here. + * (e.g. #if (_MIPS_FPSET == 16) ) + */ + +/* + * Floating Point register set + * Define: + * _MIPS_FPSET + * Can take on the values 16 or 32 + */ + +/* + * Instruction Set Architecture + * Define: + * _MIPS_ISA + */ +#define _MIPS_ISA_MIPS1 1 /* R2/3K */ +#define _MIPS_ISA_MIPS2 2 /* R4K/6K */ +#define _MIPS_ISA_MIPS3 3 /* R4K */ +#define _MIPS_ISA_MIPS4 4 /* TFP */ + +/* + * Subprogram Interface Model + * Define: + * _MIPS_SIM + */ +#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */ +#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */ + /* NABI32 is 64bit calling convention but 32bit type sizes) */ +#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */ + +/* + * Data Types Sizes (C and C++) + * Defines: + * _MIPS_SZINT + * _MIPS_SZLONG + * _MIPS_SZPTR + * + * These can take on the values: 32, 64, 128 + */ + +/* + * Compilation Environments + * various compilers may offer a set of different compilation environments + * each one will pre-define the above defines appropriately. + * The MIPS ABI environment will pre-define the following: + * (cc -systype=XXX) + * + * -D_MIPS_FPSET=16 -D_MIPS_ISA=_MIPS_ISA_MIPS1 + * -D_MIPS_SIM=_MIPS_SIM_ABI32 -D_MIPS_SZINT=32 + * -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 + * + * The new MIPS 32-bit ABI environment will pre-define the following + * (cc -systype=XXX) + * -D_MIPS_FPSET=32 -D_MIPS_ISA=_MIPS_ISA_MIPS3 + * -D_MIPS_SIM=_MIPS_SIM_NABI32 -D_MIPS_SZINT=32 + * -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 + * + * The MIPS 64 bit environment will pre-define the following + * (cc -systype=XXX) + * -D_MIPS_FPSET=32 -D_MIPS_ISA=_MIPS_ISA_MIPS3 + * -D_MIPS_SIM=_MIPS_SIM_ABI64 -D_MIPS_SZINT=32 + * -D_MIPS_SZLONG=64 -D_MIPS_SZPTR=64 + * + */ + +/* + * Language Specific + * Type __psint_t - a pointer sized int - this can be used: + * a) when casting a pointer so can perform e.g. a bit operation + * b) as a return code for functions incorrectly typed as int but + * return a pointer. + * User level code can also use the ANSI std ptrdiff_t, defined in stddef.h + * in place of __psint_t + * Type __scint_t - a 'scaling' int - used when in fact one wants an 'int' + * that scales when moving to say 64 bit. (e.g. byte counts, bit lens) + */ + +#if (defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)) + +/* + * assumes int is 32 - + * otherwise there must be some other compiler basic type + */ +#if (_MIPS_SZINT != 32) +#ifdef _MIPS_SZINT +ERROR -- the macro "_MIPS_SZINT" is set to _MIPS_SZINT -- should be 32 +#else +ERROR -- the macro "_MIPS_SZINT" is unset (currently, must be set to 32) +#endif +#endif + +typedef int __int32_t; +typedef unsigned __uint32_t; + +#if (_MIPS_SZLONG == 64) + +typedef long __int64_t; +typedef unsigned long __uint64_t; + +#else + +#if defined(_LONGLONG) + +typedef long long __int64_t; +typedef unsigned long long __uint64_t; + +#else + +typedef struct { + int hi32; + int lo32; +} __int64_t; +typedef struct { + unsigned int hi32; + unsigned int lo32; +} __uint64_t; + +#endif /* _LONGLONG */ + +#endif /* _MIPS_SZLONG */ + +#if (_MIPS_SZPTR == 32) +typedef __int32_t __psint_t; +typedef __uint32_t __psunsigned_t; +#endif + +#if (_MIPS_SZPTR == 64) +typedef __int64_t __psint_t; +typedef __uint64_t __psunsigned_t; +#endif + +/* + * If any fundamental type is 64 bit, then set the scaling type + * to 64 bit + */ +#if (_MIPS_SZPTR == 64) || (_MIPS_SZLONG == 64) || (_MIPS_SZINT == 64) + +/* there exists some large fundamental type */ +typedef __int64_t __scint_t; +typedef __uint64_t __scunsigned_t; + +#else + +/* a 32 bit world */ +typedef __int32_t __scint_t; +typedef __uint32_t __scunsigned_t; + +#endif + +#endif /* C || C++ */ + +#ifdef __cplusplus +} +#endif + +#endif /* !__SGIDEFS_H__ */ diff --git a/src/lib/ultra/os/maptlbrdb.c b/src/lib/ultra/os/maptlbrdb.c deleted file mode 100644 index 7ef25e9e6..000000000 --- a/src/lib/ultra/os/maptlbrdb.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -GLOBAL_ASM( -glabel osMapTLBRdb -/* 2ff0: 40085000 */ mfc0 $t0,$10 -/* 2ff4: 24090001 */ addiu $t1,$zero,0x1 -/* 2ff8: 40890000 */ mtc0 $t1,$0 -/* 2ffc: 40802800 */ mtc0 $zero,$5 -/* 3000: 240a0017 */ addiu $t2,$zero,0x17 -/* 3004: 3c09c000 */ lui $t1,0xc000 -/* 3008: 40895000 */ mtc0 $t1,$10 -/* 300c: 3c098000 */ lui $t1,0x8000 -/* 3010: 00095982 */ srl $t3,$t1,0x6 -/* 3014: 016a5825 */ or $t3,$t3,$t2 -/* 3018: 408b1000 */ mtc0 $t3,$2 -/* 301c: 24090001 */ addiu $t1,$zero,0x1 -/* 3020: 40891800 */ mtc0 $t1,$3 -/* 3024: 00000000 */ nop -/* 3028: 42000002 */ tlbwi -/* 302c: 00000000 */ nop -/* 3030: 00000000 */ nop -/* 3034: 00000000 */ nop -/* 3038: 00000000 */ nop -/* 303c: 40885000 */ mtc0 $t0,$10 -/* 3040: 03e00008 */ jr $ra -/* 3044: 00000000 */ nop -/* 3048: 00000000 */ nop -/* 304c: 00000000 */ nop -); diff --git a/src/lib/ultra/os/maptlbrdb.s b/src/lib/ultra/os/maptlbrdb.s new file mode 100644 index 000000000..3ee064196 --- /dev/null +++ b/src/lib/ultra/os/maptlbrdb.s @@ -0,0 +1,29 @@ +#include "asm_helper.h" +.set noat +.set noreorder + +.text +LEAF(osMapTLBRdb) + mfc0 t0, C0_ENTRYHI + li t1, 1 + mtc0 t1, C0_INX + mtc0 zero, C0_PAGEMASK + li t2, TLBLO_UNCACHED | TLBLO_D | TLBLO_V | TLBLO_G + li t1, K2BASE + mtc0 t1, C0_ENTRYHI + li t1, KUSIZE + srl t3, t1,TLBLO_PFNSHIFT + or t3, t3,t2 + mtc0 t3, C0_ENTRYLO0 + li t1, TLBLO_G + mtc0 t1, C0_ENTRYLO1 + nop + tlbwi + nop + nop + nop + nop + mtc0 t0, C0_ENTRYHI + jr ra + nop +END(osMapTLBRdb) diff --git a/tools/irix/root/usr/bin/as b/tools/irix/root/usr/bin/as new file mode 100755 index 0000000000000000000000000000000000000000..2936fc3fda571fd738734a8d764797a45de66fee GIT binary patch literal 275168 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 o5Wd`&nXys!5Rpp*j<+8mK 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