Annotation of previous_trunk/src/cpu/cpummu030.h, revision 1.1

1.1     ! root        1: #ifndef UAE_CPUMMU030_H
        !             2: #define UAE_CPUMMU030_H
        !             3: 
        !             4: #include "mmu_common.h"
        !             5: 
        !             6: extern uae_u64 srp_030, crp_030;
        !             7: extern uae_u32 tt0_030, tt1_030, tc_030;
        !             8: extern uae_u16 mmusr_030;
        !             9: 
        !            10: #define MAX_MMU030_ACCESS 10
        !            11: extern uae_u32 mm030_stageb_address;
        !            12: extern int mmu030_idx;
        !            13: extern bool mmu030_retry;
        !            14: extern int mmu030_opcode, mmu030_opcode_stageb;
        !            15: extern int mmu030_fake_prefetch;
        !            16: extern uaecptr mmu030_fake_prefetch_addr;
        !            17: extern uae_u16 mmu030_state[3];
        !            18: extern uae_u32 mmu030_data_buffer;
        !            19: extern uae_u32 mmu030_disp_store[2];
        !            20: extern uae_u32 mmu030_fmovem_store[2];
        !            21: 
        !            22: #define MMU030_STATEFLAG1_FMOVEM 0x2000
        !            23: #define MMU030_STATEFLAG1_MOVEM1 0x4000
        !            24: #define MMU030_STATEFLAG1_MOVEM2 0x8000
        !            25: #define MMU030_STATEFLAG1_DISP0 0x0001
        !            26: #define MMU030_STATEFLAG1_DISP1 0x0002
        !            27: 
        !            28: struct mmu030_access
        !            29: {
        !            30:        bool done;
        !            31:        uae_u32 val;
        !            32: };
        !            33: extern struct mmu030_access mmu030_ad[MAX_MMU030_ACCESS];
        !            34: 
        !            35: uae_u32 REGPARAM3 get_disp_ea_020_mmu030 (uae_u32 base, int idx) REGPARAM;
        !            36: void mmu030_page_fault(uaecptr addr, bool read, int flags, uae_u32 fc);
        !            37: 
        !            38: bool mmu_op30_pmove (uaecptr pc, uae_u32 opcode, uae_u16 next, uaecptr extra);
        !            39: bool mmu_op30_ptest (uaecptr pc, uae_u32 opcode, uae_u16 next, uaecptr extra);
        !            40: bool mmu_op30_pload (uaecptr pc, uae_u32 opcode, uae_u16 next, uaecptr extra);
        !            41: bool mmu_op30_pflush (uaecptr pc, uae_u32 opcode, uae_u16 next, uaecptr extra);
        !            42: 
        !            43: uae_u32 mmu_op30_helper_get_fc(uae_u16 next);
        !            44: 
        !            45: void mmu030_ptest_atc_search(uaecptr logical_addr, uae_u32 fc, bool write);
        !            46: uae_u32 mmu030_ptest_table_search(uaecptr extra, uae_u32 fc, bool write, int level);
        !            47: uae_u32 mmu030_table_search(uaecptr addr, uae_u32 fc, bool write, int level);
        !            48: 
        !            49: 
        !            50: typedef struct {
        !            51:     uae_u32 addr_base;
        !            52:     uae_u32 addr_mask;
        !            53:     uae_u32 fc_base;
        !            54:     uae_u32 fc_mask;
        !            55: } TT_info;
        !            56: 
        !            57: TT_info mmu030_decode_tt(uae_u32 TT);
        !            58: bool mmu030_decode_tc(uae_u32 TC);
        !            59: bool mmu030_decode_rp(uae_u64 RP);
        !            60: 
        !            61: int mmu030_logical_is_in_atc(uaecptr addr, uae_u32 fc, bool write);
        !            62: void mmu030_atc_handle_history_bit(int entry_num);
        !            63: 
        !            64: void mmu030_put_long_atc(uaecptr addr, uae_u32 val, int l, uae_u32 fc);
        !            65: void mmu030_put_word_atc(uaecptr addr, uae_u16 val, int l, uae_u32 fc);
        !            66: void mmu030_put_byte_atc(uaecptr addr, uae_u8 val, int l, uae_u32 fc);
        !            67: uae_u32 mmu030_get_long_atc(uaecptr addr, int l, uae_u32 fc);
        !            68: uae_u16 mmu030_get_word_atc(uaecptr addr, int l, uae_u32 fc);
        !            69: uae_u8 mmu030_get_byte_atc(uaecptr addr, int l, uae_u32 fc);
        !            70: 
        !            71: void mmu030_put_atc_generic(uaecptr addr, uae_u32 val, int l, uae_u32 fc, int size, int flags);
        !            72: uae_u32 mmu030_get_atc_generic(uaecptr addr, int l, uae_u32 fc, int size, int flags, bool checkwrite);
        !            73: 
        !            74: void mmu030_flush_atc_fc(uae_u32 fc_base, uae_u32 fc_mask);
        !            75: void mmu030_flush_atc_page(uaecptr logical_addr);
        !            76: void mmu030_flush_atc_page_fc(uaecptr logical_addr, uae_u32 fc_base, uae_u32 fc_mask);
        !            77: void mmu030_flush_atc_all(void);
        !            78: void mmu030_reset(int hardreset);
        !            79: void mmu030_set_funcs(void);
        !            80: uaecptr mmu030_translate(uaecptr addr, bool super, bool data, bool write);
        !            81: 
        !            82: int mmu030_match_ttr(uaecptr addr, uae_u32 fc, bool write);
        !            83: int mmu030_match_ttr_access(uaecptr addr, uae_u32 fc, bool write);
        !            84: int mmu030_match_lrmw_ttr_access(uaecptr addr, uae_u32 fc);
        !            85: int mmu030_do_match_ttr(uae_u32 tt, TT_info masks, uaecptr addr, uae_u32 fc, bool write);
        !            86: int mmu030_do_match_lrmw_ttr(uae_u32 tt, TT_info masks, uaecptr addr, uae_u32 fc);
        !            87: 
        !            88: void mmu030_put_long(uaecptr addr, uae_u32 val, uae_u32 fc);
        !            89: void mmu030_put_word(uaecptr addr, uae_u16 val, uae_u32 fc);
        !            90: void mmu030_put_byte(uaecptr addr, uae_u8  val, uae_u32 fc);
        !            91: uae_u32 mmu030_get_long(uaecptr addr, uae_u32 fc);
        !            92: uae_u16 mmu030_get_word(uaecptr addr, uae_u32 fc);
        !            93: uae_u8  mmu030_get_byte(uaecptr addr, uae_u32 fc);
        !            94: uae_u32 mmu030_get_ilong(uaecptr addr, uae_u32 fc);
        !            95: uae_u16 mmu030_get_iword(uaecptr addr, uae_u32 fc);
        !            96: 
        !            97: uae_u32 uae_mmu030_get_lrmw(uaecptr addr, int size);
        !            98: void uae_mmu030_put_lrmw(uaecptr addr, uae_u32 val, int size);
        !            99: 
        !           100: void mmu030_put_generic(uaecptr addr, uae_u32 val, uae_u32 fc, int size, int accesssize, int flags);
        !           101: uae_u32 mmu030_get_generic(uaecptr addr, uae_u32 fc, int size, int accesssize, int flags);
        !           102: 
        !           103: extern uae_u16 REGPARAM3 mmu030_get_word_unaligned(uaecptr addr, uae_u32 fc, int flags) REGPARAM;
        !           104: extern uae_u32 REGPARAM3 mmu030_get_long_unaligned(uaecptr addr, uae_u32 fc, int flags) REGPARAM;
        !           105: extern uae_u32 REGPARAM3 mmu030_get_ilong_unaligned(uaecptr addr, uae_u32 fc, int flags) REGPARAM;
        !           106: extern uae_u16 REGPARAM3 mmu030_get_lrmw_word_unaligned(uaecptr addr, uae_u32 fc, int flags) REGPARAM;
        !           107: extern uae_u32 REGPARAM3 mmu030_get_lrmw_long_unaligned(uaecptr addr, uae_u32 fc, int flags) REGPARAM;
        !           108: extern void REGPARAM3 mmu030_put_word_unaligned(uaecptr addr, uae_u16 val, uae_u32 fc, int flags) REGPARAM;
        !           109: extern void REGPARAM3 mmu030_put_long_unaligned(uaecptr addr, uae_u32 val, uae_u32 fc, int flags) REGPARAM;
        !           110: 
        !           111: static ALWAYS_INLINE uae_u32 uae_mmu030_get_ilong(uaecptr addr)
        !           112: {
        !           113:     uae_u32 fc = (regs.s ? 4 : 0) | 2;
        !           114: 
        !           115:        if (unlikely(is_unaligned(addr, 4)))
        !           116:                return mmu030_get_ilong_unaligned(addr, fc, 0);
        !           117:        return mmu030_get_ilong(addr, fc);
        !           118: }
        !           119: static ALWAYS_INLINE uae_u16 uae_mmu030_get_iword(uaecptr addr)
        !           120: {
        !           121:     uae_u32 fc = (regs.s ? 4 : 0) | 2;
        !           122:        return mmu030_get_iword(addr, fc);
        !           123: }
        !           124: static ALWAYS_INLINE uae_u16 uae_mmu030_get_ibyte(uaecptr addr)
        !           125: {
        !           126:     uae_u32 fc = (regs.s ? 4 : 0) | 2;
        !           127: 
        !           128:        return mmu030_get_byte(addr, fc);
        !           129: }
        !           130: static ALWAYS_INLINE uae_u32 uae_mmu030_get_long(uaecptr addr)
        !           131: {
        !           132:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           133: 
        !           134:        if (unlikely(is_unaligned(addr, 4)))
        !           135:                return mmu030_get_long_unaligned(addr, fc, 0);
        !           136:        return mmu030_get_long(addr, fc);
        !           137: }
        !           138: static ALWAYS_INLINE uae_u16 uae_mmu030_get_word(uaecptr addr)
        !           139: {
        !           140:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           141: 
        !           142:        if (unlikely(is_unaligned(addr, 2)))
        !           143:                return mmu030_get_word_unaligned(addr, fc, 0);
        !           144:        return mmu030_get_word(addr, fc);
        !           145: }
        !           146: static ALWAYS_INLINE uae_u8 uae_mmu030_get_byte(uaecptr addr)
        !           147: {
        !           148:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           149: 
        !           150:        return mmu030_get_byte(addr, fc);
        !           151: }
        !           152: static ALWAYS_INLINE void uae_mmu030_put_long(uaecptr addr, uae_u32 val)
        !           153: {
        !           154:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           155:     
        !           156:        if (unlikely(is_unaligned(addr, 4)))
        !           157:                mmu030_put_long_unaligned(addr, val, fc, 0);
        !           158:        else
        !           159:                mmu030_put_long(addr, val, fc);
        !           160: }
        !           161: static ALWAYS_INLINE void uae_mmu030_put_word(uaecptr addr, uae_u16 val)
        !           162: {
        !           163:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           164: 
        !           165:        if (unlikely(is_unaligned(addr, 2)))
        !           166:                mmu030_put_word_unaligned(addr, val, fc, 0);
        !           167:        else
        !           168:                mmu030_put_word(addr, val, fc);
        !           169: }
        !           170: static ALWAYS_INLINE void uae_mmu030_put_byte(uaecptr addr, uae_u8 val)
        !           171: {
        !           172:     uae_u32 fc = (regs.s ? 4 : 0) | 1;
        !           173: 
        !           174:        mmu030_put_byte(addr, val, fc);
        !           175: }
        !           176: 
        !           177: static ALWAYS_INLINE uae_u32 sfc030_get_long(uaecptr addr)
        !           178: {
        !           179:     uae_u32 fc = regs.sfc;
        !           180: #if MMUDEBUG > 2
        !           181:        write_log(_T("sfc030_get_long: FC = %i\n"),fc);
        !           182: #endif
        !           183:        if (unlikely(is_unaligned(addr, 4)))
        !           184:                return mmu030_get_long_unaligned(addr, fc, 0);
        !           185:        return mmu030_get_long(addr, fc);
        !           186: }
        !           187: 
        !           188: static ALWAYS_INLINE uae_u16 sfc030_get_word(uaecptr addr)
        !           189: {
        !           190:     uae_u32 fc = regs.sfc;
        !           191: #if MMUDEBUG > 2
        !           192:        write_log(_T("sfc030_get_word: FC = %i\n"),fc);
        !           193: #endif
        !           194:     if (unlikely(is_unaligned(addr, 2)))
        !           195:                return mmu030_get_word_unaligned(addr, fc, 0);
        !           196:        return mmu030_get_word(addr, fc);
        !           197: }
        !           198: 
        !           199: static ALWAYS_INLINE uae_u8 sfc030_get_byte(uaecptr addr)
        !           200: {
        !           201:     uae_u32 fc = regs.sfc;
        !           202: #if MMUDEBUG > 2
        !           203:        write_log(_T("sfc030_get_byte: FC = %i\n"),fc);
        !           204: #endif
        !           205:        return mmu030_get_byte(addr, fc);
        !           206: }
        !           207: 
        !           208: static ALWAYS_INLINE void dfc030_put_long(uaecptr addr, uae_u32 val)
        !           209: {
        !           210:     uae_u32 fc = regs.dfc;
        !           211: #if MMUDEBUG > 2
        !           212:        write_log(_T("dfc030_put_long: %08X = %08X FC = %i\n"), addr, val, fc);
        !           213: #endif
        !           214:     if (unlikely(is_unaligned(addr, 4)))
        !           215:                mmu030_put_long_unaligned(addr, val, fc, 0);
        !           216:        else
        !           217:                mmu030_put_long(addr, val, fc);
        !           218: }
        !           219: 
        !           220: static ALWAYS_INLINE void dfc030_put_word(uaecptr addr, uae_u16 val)
        !           221: {
        !           222:     uae_u32 fc = regs.dfc;
        !           223: #if MMUDEBUG > 2
        !           224:        write_log(_T("dfc030_put_word: %08X = %04X FC = %i\n"), addr, val, fc);
        !           225: #endif
        !           226:        if (unlikely(is_unaligned(addr, 2)))
        !           227:                mmu030_put_word_unaligned(addr, val, fc, 0);
        !           228:        else
        !           229:                mmu030_put_word(addr, val, fc);
        !           230: }
        !           231: 
        !           232: static ALWAYS_INLINE void dfc030_put_byte(uaecptr addr, uae_u8 val)
        !           233: {
        !           234:     uae_u32 fc = regs.dfc;
        !           235: #if MMUDEBUG > 2
        !           236:        write_log(_T("dfc030_put_byte: %08X = %02X FC = %i\n"), addr, val, fc);
        !           237: #endif
        !           238:        mmu030_put_byte(addr, val, fc);
        !           239: }
        !           240: 
        !           241: #define ACCESS_CHECK_PUT \
        !           242:        if (!mmu030_ad[mmu030_idx].done) { \
        !           243:                mmu030_ad[mmu030_idx].val = v; \
        !           244:        } else if (mmu030_ad[mmu030_idx].done) { \
        !           245:                mmu030_idx++; \
        !           246:                return; \
        !           247:        }
        !           248: 
        !           249: #define ACCESS_CHECK_GET \
        !           250:        if (mmu030_ad[mmu030_idx].done) { \
        !           251:                v = mmu030_ad[mmu030_idx].val; \
        !           252:                mmu030_idx++; \
        !           253:                return v; \
        !           254:        }
        !           255: 
        !           256: #define ACCESS_CHECK_GET_PC(pc) \
        !           257:        if (mmu030_ad[mmu030_idx].done) { \
        !           258:                v = mmu030_ad[mmu030_idx].val; \
        !           259:                mmu030_idx++; \
        !           260:                m68k_incpci (pc); \
        !           261:                return v; \
        !           262:        }
        !           263: 
        !           264: #define ACCESS_EXIT_PUT \
        !           265:        mmu030_ad[mmu030_idx].done = true; \
        !           266:        mmu030_idx++; \
        !           267:        mmu030_ad[mmu030_idx].done = false;
        !           268: 
        !           269: #define ACCESS_EXIT_GET \
        !           270:        mmu030_ad[mmu030_idx].val = v; \
        !           271:        mmu030_ad[mmu030_idx].done = true; \
        !           272:        mmu030_idx++; \
        !           273:        mmu030_ad[mmu030_idx].done = false;
        !           274: 
        !           275: STATIC_INLINE void put_byte_mmu030_state (uaecptr addr, uae_u32 v)
        !           276: {
        !           277:        ACCESS_CHECK_PUT
        !           278:     uae_mmu030_put_byte (addr, v);
        !           279:        ACCESS_EXIT_PUT
        !           280: }
        !           281: STATIC_INLINE void put_lrmw_byte_mmu030_state (uaecptr addr, uae_u32 v)
        !           282: {
        !           283:        ACCESS_CHECK_PUT
        !           284:     uae_mmu030_put_lrmw (addr, v, sz_byte);
        !           285:        ACCESS_EXIT_PUT
        !           286: }
        !           287: STATIC_INLINE void put_word_mmu030_state (uaecptr addr, uae_u32 v)
        !           288: {
        !           289:        ACCESS_CHECK_PUT
        !           290:     uae_mmu030_put_word (addr, v);
        !           291:        ACCESS_EXIT_PUT
        !           292: }
        !           293: STATIC_INLINE void put_lrmw_word_mmu030_state (uaecptr addr, uae_u32 v)
        !           294: {
        !           295:        ACCESS_CHECK_PUT
        !           296:     uae_mmu030_put_lrmw (addr, v, sz_word);
        !           297:        ACCESS_EXIT_PUT
        !           298: }
        !           299: STATIC_INLINE void put_long_mmu030_state (uaecptr addr, uae_u32 v)
        !           300: {
        !           301:        ACCESS_CHECK_PUT
        !           302:     uae_mmu030_put_long (addr, v);
        !           303:        ACCESS_EXIT_PUT
        !           304: }
        !           305: STATIC_INLINE void put_lrmw_long_mmu030_state (uaecptr addr, uae_u32 v)
        !           306: {
        !           307:        ACCESS_CHECK_PUT
        !           308:     uae_mmu030_put_lrmw (addr, v, sz_long);
        !           309:        ACCESS_EXIT_PUT
        !           310: }
        !           311: 
        !           312: STATIC_INLINE uae_u32 get_byte_mmu030_state (uaecptr addr)
        !           313: {
        !           314:        uae_u32 v;
        !           315:        ACCESS_CHECK_GET
        !           316:     v = uae_mmu030_get_byte (addr);
        !           317:        ACCESS_EXIT_GET
        !           318:        return v;
        !           319: }
        !           320: STATIC_INLINE uae_u32 get_lrmw_byte_mmu030_state (uaecptr addr)
        !           321: {
        !           322:        uae_u32 v;
        !           323:        ACCESS_CHECK_GET
        !           324:     v = uae_mmu030_get_lrmw (addr, sz_byte);
        !           325:        ACCESS_EXIT_GET
        !           326:        return v;
        !           327: }
        !           328: 
        !           329: STATIC_INLINE uae_u32 get_word_mmu030_state (uaecptr addr)
        !           330: {
        !           331:        uae_u32 v;
        !           332:        ACCESS_CHECK_GET
        !           333:        v = uae_mmu030_get_word (addr);
        !           334:        ACCESS_EXIT_GET
        !           335:        return v;
        !           336: }
        !           337: STATIC_INLINE uae_u32 get_lrmw_word_mmu030_state (uaecptr addr)
        !           338: {
        !           339:        uae_u32 v;
        !           340:        ACCESS_CHECK_GET
        !           341:     v = uae_mmu030_get_lrmw (addr, sz_word);
        !           342:        ACCESS_EXIT_GET
        !           343:        return v;
        !           344: }
        !           345: STATIC_INLINE uae_u32 get_long_mmu030_state (uaecptr addr)
        !           346: {
        !           347:        uae_u32 v;
        !           348:        ACCESS_CHECK_GET
        !           349:        v = uae_mmu030_get_long (addr);
        !           350:        ACCESS_EXIT_GET
        !           351:        return v;
        !           352: }
        !           353: STATIC_INLINE uae_u32 get_lrmw_long_mmu030_state (uaecptr addr)
        !           354: {
        !           355:        uae_u32 v;
        !           356:        ACCESS_CHECK_GET
        !           357:     v = uae_mmu030_get_lrmw (addr, sz_long);
        !           358:        ACCESS_EXIT_GET
        !           359:        return v;
        !           360: }
        !           361: 
        !           362: STATIC_INLINE uae_u32 get_ibyte_mmu030_state (int o)
        !           363: {
        !           364:        uae_u32 v;
        !           365:     uae_u32 addr = m68k_getpci () + o;
        !           366:        ACCESS_CHECK_GET
        !           367:     v = uae_mmu030_get_iword (addr);
        !           368:        ACCESS_EXIT_GET
        !           369:        return v;
        !           370: }
        !           371: STATIC_INLINE uae_u32 get_iword_mmu030_state (int o)
        !           372: {
        !           373:        uae_u32 v;
        !           374:     uae_u32 addr = m68k_getpci () + o;
        !           375:        ACCESS_CHECK_GET
        !           376:     v = uae_mmu030_get_iword (addr);
        !           377:        ACCESS_EXIT_GET
        !           378:        return v;
        !           379: }
        !           380: STATIC_INLINE uae_u32 get_ilong_mmu030_state (int o)
        !           381: {
        !           382:        uae_u32 v;
        !           383:     uae_u32 addr = m68k_getpci () + o;
        !           384:        ACCESS_CHECK_GET
        !           385:     v = uae_mmu030_get_ilong (addr);
        !           386:        ACCESS_EXIT_GET
        !           387:        return v;
        !           388: }
        !           389: STATIC_INLINE uae_u32 next_iword_mmu030_state (void)
        !           390: {
        !           391:        uae_u32 v;
        !           392:     uae_u32 addr = m68k_getpci ();
        !           393:        ACCESS_CHECK_GET_PC(2);
        !           394:     v = uae_mmu030_get_iword (addr);
        !           395:     m68k_incpci (2);
        !           396:        ACCESS_EXIT_GET
        !           397:        return v;
        !           398: }
        !           399: STATIC_INLINE uae_u32 next_ilong_mmu030_state (void)
        !           400: {
        !           401:        uae_u32 v;
        !           402:     uae_u32 addr = m68k_getpci ();
        !           403:        ACCESS_CHECK_GET_PC(4);
        !           404:     v = uae_mmu030_get_ilong (addr);
        !           405:     m68k_incpci (4);
        !           406:        ACCESS_EXIT_GET
        !           407:        return v;
        !           408: }
        !           409: 
        !           410: STATIC_INLINE uae_u32 get_byte_mmu030 (uaecptr addr)
        !           411: {
        !           412:        return uae_mmu030_get_byte (addr);
        !           413: }
        !           414: STATIC_INLINE uae_u32 get_word_mmu030 (uaecptr addr)
        !           415: {
        !           416:        return uae_mmu030_get_word (addr);
        !           417: }
        !           418: STATIC_INLINE uae_u32 get_long_mmu030 (uaecptr addr)
        !           419: {
        !           420:        return uae_mmu030_get_long (addr);
        !           421: }
        !           422: STATIC_INLINE void put_byte_mmu030 (uaecptr addr, uae_u32 v)
        !           423: {
        !           424:     uae_mmu030_put_byte (addr, v);
        !           425: }
        !           426: 
        !           427: STATIC_INLINE void put_word_mmu030 (uaecptr addr, uae_u32 v)
        !           428: {
        !           429:     uae_mmu030_put_word (addr, v);
        !           430: }
        !           431: STATIC_INLINE void put_long_mmu030 (uaecptr addr, uae_u32 v)
        !           432: {
        !           433:     uae_mmu030_put_long (addr, v);
        !           434: }
        !           435: 
        !           436: STATIC_INLINE uae_u32 get_ibyte_mmu030 (int o)
        !           437: {
        !           438:     uae_u32 pc = m68k_getpci () + o;
        !           439:     return uae_mmu030_get_iword (pc);
        !           440: }
        !           441: STATIC_INLINE uae_u32 get_iword_mmu030 (int o)
        !           442: {
        !           443:     uae_u32 pc = m68k_getpci () + o;
        !           444:     return uae_mmu030_get_iword (pc);
        !           445: }
        !           446: STATIC_INLINE uae_u32 get_ilong_mmu030 (int o)
        !           447: {
        !           448:     uae_u32 pc = m68k_getpci () + o;
        !           449:     return uae_mmu030_get_ilong (pc);
        !           450: }
        !           451: STATIC_INLINE uae_u32 next_iword_mmu030 (void)
        !           452: {
        !           453:        uae_u32 v;
        !           454:     uae_u32 pc = m68k_getpci ();
        !           455:     v = uae_mmu030_get_iword (pc);
        !           456:     m68k_incpci (2);
        !           457:        return v;
        !           458: }
        !           459: STATIC_INLINE uae_u32 next_ilong_mmu030 (void)
        !           460: {
        !           461:        uae_u32 v;
        !           462:     uae_u32 pc = m68k_getpci ();
        !           463:     v = uae_mmu030_get_ilong (pc);
        !           464:     m68k_incpci (4);
        !           465:        return v;
        !           466: }
        !           467: 
        !           468: extern void m68k_do_rts_mmu030 (void);
        !           469: extern void m68k_do_rte_mmu030 (uaecptr a7);
        !           470: extern void flush_mmu030 (uaecptr, int);
        !           471: extern void m68k_do_bsr_mmu030 (uaecptr oldpc, uae_s32 offset);
        !           472: 
        !           473: #endif /* UAE_CPUMMU030_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.