18c2ecf20Sopenharmony_ci|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28c2ecf20Sopenharmony_ci|MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP 38c2ecf20Sopenharmony_ci|M68000 Hi-Performance Microprocessor Division 48c2ecf20Sopenharmony_ci|M68060 Software Package 58c2ecf20Sopenharmony_ci|Production Release P1.00 -- October 10, 1994 68c2ecf20Sopenharmony_ci| 78c2ecf20Sopenharmony_ci|M68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved. 88c2ecf20Sopenharmony_ci| 98c2ecf20Sopenharmony_ci|THE SOFTWARE is provided on an "AS IS" basis and without warranty. 108c2ecf20Sopenharmony_ci|To the maximum extent permitted by applicable law, 118c2ecf20Sopenharmony_ci|MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, 128c2ecf20Sopenharmony_ci|INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 138c2ecf20Sopenharmony_ci|and any warranty against infringement with regard to the SOFTWARE 148c2ecf20Sopenharmony_ci|(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. 158c2ecf20Sopenharmony_ci| 168c2ecf20Sopenharmony_ci|To the maximum extent permitted by applicable law, 178c2ecf20Sopenharmony_ci|IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER 188c2ecf20Sopenharmony_ci|(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, 198c2ecf20Sopenharmony_ci|BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) 208c2ecf20Sopenharmony_ci|ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. 218c2ecf20Sopenharmony_ci|Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. 228c2ecf20Sopenharmony_ci| 238c2ecf20Sopenharmony_ci|You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE 248c2ecf20Sopenharmony_ci|so long as this entire notice is retained without alteration in any modified and/or 258c2ecf20Sopenharmony_ci|redistributed versions, and that such modified versions are clearly identified as such. 268c2ecf20Sopenharmony_ci|No licenses are granted by implication, estoppel or otherwise under any patents 278c2ecf20Sopenharmony_ci|or trademarks of Motorola, Inc. 288c2ecf20Sopenharmony_ci|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 298c2ecf20Sopenharmony_ci| iskeleton.s 308c2ecf20Sopenharmony_ci| 318c2ecf20Sopenharmony_ci| This file contains: 328c2ecf20Sopenharmony_ci| (1) example "Call-out"s 338c2ecf20Sopenharmony_ci| (2) example package entry code 348c2ecf20Sopenharmony_ci| (3) example "Call-out" table 358c2ecf20Sopenharmony_ci| 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci#include <linux/linkage.h> 388c2ecf20Sopenharmony_ci#include <asm/entry.h> 398c2ecf20Sopenharmony_ci#include <asm/asm-offsets.h> 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci|################################ 438c2ecf20Sopenharmony_ci| (1) EXAMPLE CALL-OUTS # 448c2ecf20Sopenharmony_ci| # 458c2ecf20Sopenharmony_ci| _060_isp_done() # 468c2ecf20Sopenharmony_ci| _060_real_chk() # 478c2ecf20Sopenharmony_ci| _060_real_divbyzero() # 488c2ecf20Sopenharmony_ci| # 498c2ecf20Sopenharmony_ci| _060_real_cas() # 508c2ecf20Sopenharmony_ci| _060_real_cas2() # 518c2ecf20Sopenharmony_ci| _060_real_lock_page() # 528c2ecf20Sopenharmony_ci| _060_real_unlock_page() # 538c2ecf20Sopenharmony_ci|################################ 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci| 568c2ecf20Sopenharmony_ci| _060_isp_done(): 578c2ecf20Sopenharmony_ci| 588c2ecf20Sopenharmony_ci| This is and example main exit point for the Unimplemented Integer 598c2ecf20Sopenharmony_ci| Instruction exception handler. For a normal exit, the 608c2ecf20Sopenharmony_ci| _isp_unimp() branches to here so that the operating system 618c2ecf20Sopenharmony_ci| can do any clean-up desired. The stack frame is the 628c2ecf20Sopenharmony_ci| Unimplemented Integer Instruction stack frame with 638c2ecf20Sopenharmony_ci| the PC pointing to the instruction following the instruction 648c2ecf20Sopenharmony_ci| just emulated. 658c2ecf20Sopenharmony_ci| To simply continue execution at the next instruction, just 668c2ecf20Sopenharmony_ci| do an "rte". 678c2ecf20Sopenharmony_ci| 688c2ecf20Sopenharmony_ci| Linux/68k: If returning to user space, check for needed reselections. 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci .global _060_isp_done 718c2ecf20Sopenharmony_ci_060_isp_done: 728c2ecf20Sopenharmony_ci btst #0x5,%sp@ | supervisor bit set in saved SR? 738c2ecf20Sopenharmony_ci beq .Lnotkern 748c2ecf20Sopenharmony_ci rte 758c2ecf20Sopenharmony_ci.Lnotkern: 768c2ecf20Sopenharmony_ci SAVE_ALL_INT 778c2ecf20Sopenharmony_ci GET_CURRENT(%d0) 788c2ecf20Sopenharmony_ci | deliver signals, reschedule etc.. 798c2ecf20Sopenharmony_ci jra ret_from_exception 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci| 828c2ecf20Sopenharmony_ci| _060_real_chk(): 838c2ecf20Sopenharmony_ci| 848c2ecf20Sopenharmony_ci| This is an alternate exit point for the Unimplemented Integer 858c2ecf20Sopenharmony_ci| Instruction exception handler. If the instruction was a "chk2" 868c2ecf20Sopenharmony_ci| and the operand was out of bounds, then _isp_unimp() creates 878c2ecf20Sopenharmony_ci| a CHK exception stack frame from the Unimplemented Integer Instrcution 888c2ecf20Sopenharmony_ci| stack frame and branches to this routine. 898c2ecf20Sopenharmony_ci| 908c2ecf20Sopenharmony_ci| Linux/68k: commented out test for tracing 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci .global _060_real_chk 938c2ecf20Sopenharmony_ci_060_real_chk: 948c2ecf20Sopenharmony_ci| tst.b (%sp) | is tracing enabled? 958c2ecf20Sopenharmony_ci| bpls real_chk_end | no 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci| 988c2ecf20Sopenharmony_ci| CHK FRAME TRACE FRAME 998c2ecf20Sopenharmony_ci| ***************** ***************** 1008c2ecf20Sopenharmony_ci| * Current PC * * Current PC * 1018c2ecf20Sopenharmony_ci| ***************** ***************** 1028c2ecf20Sopenharmony_ci| * 0x2 * 0x018 * * 0x2 * 0x024 * 1038c2ecf20Sopenharmony_ci| ***************** ***************** 1048c2ecf20Sopenharmony_ci| * Next * * Next * 1058c2ecf20Sopenharmony_ci| * PC * * PC * 1068c2ecf20Sopenharmony_ci| ***************** ***************** 1078c2ecf20Sopenharmony_ci| * SR * * SR * 1088c2ecf20Sopenharmony_ci| ***************** ***************** 1098c2ecf20Sopenharmony_ci| 1108c2ecf20Sopenharmony_ci| move.b #0x24,0x7(%sp) | set trace vecno 1118c2ecf20Sopenharmony_ci| bral _060_real_trace 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_cireal_chk_end: 1148c2ecf20Sopenharmony_ci bral trap | jump to trap handler 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci| 1178c2ecf20Sopenharmony_ci| _060_real_divbyzero: 1188c2ecf20Sopenharmony_ci| 1198c2ecf20Sopenharmony_ci| This is an alternate exit point for the Unimplemented Integer 1208c2ecf20Sopenharmony_ci| Instruction exception handler isp_unimp(). If the instruction is a 64-bit 1218c2ecf20Sopenharmony_ci| integer divide where the source operand is a zero, then the _isp_unimp() 1228c2ecf20Sopenharmony_ci| creates a Divide-by-zero exception stack frame from the Unimplemented 1238c2ecf20Sopenharmony_ci| Integer Instruction stack frame and branches to this routine. 1248c2ecf20Sopenharmony_ci| 1258c2ecf20Sopenharmony_ci| Remember that a trace exception may be pending. The code below performs 1268c2ecf20Sopenharmony_ci| no action associated with the "chk" exception. If tracing is enabled, 1278c2ecf20Sopenharmony_ci| then it create a Trace exception stack frame from the "chk" exception 1288c2ecf20Sopenharmony_ci| stack frame and branches to the _real_trace() entry point. 1298c2ecf20Sopenharmony_ci| 1308c2ecf20Sopenharmony_ci| Linux/68k: commented out test for tracing 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci .global _060_real_divbyzero 1338c2ecf20Sopenharmony_ci_060_real_divbyzero: 1348c2ecf20Sopenharmony_ci| tst.b (%sp) | is tracing enabled? 1358c2ecf20Sopenharmony_ci| bpls real_divbyzero_end | no 1368c2ecf20Sopenharmony_ci 1378c2ecf20Sopenharmony_ci| 1388c2ecf20Sopenharmony_ci| DIVBYZERO FRAME TRACE FRAME 1398c2ecf20Sopenharmony_ci| ***************** ***************** 1408c2ecf20Sopenharmony_ci| * Current PC * * Current PC * 1418c2ecf20Sopenharmony_ci| ***************** ***************** 1428c2ecf20Sopenharmony_ci| * 0x2 * 0x014 * * 0x2 * 0x024 * 1438c2ecf20Sopenharmony_ci| ***************** ***************** 1448c2ecf20Sopenharmony_ci| * Next * * Next * 1458c2ecf20Sopenharmony_ci| * PC * * PC * 1468c2ecf20Sopenharmony_ci| ***************** ***************** 1478c2ecf20Sopenharmony_ci| * SR * * SR * 1488c2ecf20Sopenharmony_ci| ***************** ***************** 1498c2ecf20Sopenharmony_ci| 1508c2ecf20Sopenharmony_ci| move.b #0x24,0x7(%sp) | set trace vecno 1518c2ecf20Sopenharmony_ci| bral _060_real_trace 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_cireal_divbyzero_end: 1548c2ecf20Sopenharmony_ci bral trap | jump to trap handler 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci|########################## 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci| 1598c2ecf20Sopenharmony_ci| _060_real_cas(): 1608c2ecf20Sopenharmony_ci| 1618c2ecf20Sopenharmony_ci| Entry point for the selected cas emulation code implementation. 1628c2ecf20Sopenharmony_ci| If the implementation provided by the 68060ISP is sufficient, 1638c2ecf20Sopenharmony_ci| then this routine simply re-enters the package through _isp_cas. 1648c2ecf20Sopenharmony_ci| 1658c2ecf20Sopenharmony_ci .global _060_real_cas 1668c2ecf20Sopenharmony_ci_060_real_cas: 1678c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x08 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_ci| 1708c2ecf20Sopenharmony_ci| _060_real_cas2(): 1718c2ecf20Sopenharmony_ci| 1728c2ecf20Sopenharmony_ci| Entry point for the selected cas2 emulation code implementation. 1738c2ecf20Sopenharmony_ci| If the implementation provided by the 68060ISP is sufficient, 1748c2ecf20Sopenharmony_ci| then this routine simply re-enters the package through _isp_cas2. 1758c2ecf20Sopenharmony_ci| 1768c2ecf20Sopenharmony_ci .global _060_real_cas2 1778c2ecf20Sopenharmony_ci_060_real_cas2: 1788c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x10 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci| 1818c2ecf20Sopenharmony_ci| _060_lock_page(): 1828c2ecf20Sopenharmony_ci| 1838c2ecf20Sopenharmony_ci| Entry point for the operating system`s routine to "lock" a page 1848c2ecf20Sopenharmony_ci| from being paged out. This routine is needed by the cas/cas2 1858c2ecf20Sopenharmony_ci| algorithms so that no page faults occur within the "core" code 1868c2ecf20Sopenharmony_ci| region. Note: the routine must lock two pages if the operand 1878c2ecf20Sopenharmony_ci| spans two pages. 1888c2ecf20Sopenharmony_ci| NOTE: THE ROUTINE SHOULD RETURN AN FSLW VALUE IN D0 ON FAILURE 1898c2ecf20Sopenharmony_ci| SO THAT THE 060SP CAN CREATE A PROPER ACCESS ERROR FRAME. 1908c2ecf20Sopenharmony_ci| Arguments: 1918c2ecf20Sopenharmony_ci| a0 = operand address 1928c2ecf20Sopenharmony_ci| d0 = `xxxxxxff -> supervisor; `xxxxxx00 -> user 1938c2ecf20Sopenharmony_ci| d1 = `xxxxxxff -> longword; `xxxxxx00 -> word 1948c2ecf20Sopenharmony_ci| Expected outputs: 1958c2ecf20Sopenharmony_ci| d0 = 0 -> success; non-zero -> failure 1968c2ecf20Sopenharmony_ci| 1978c2ecf20Sopenharmony_ci| Linux/m68k: Make sure the page is properly paged in, so we use 1988c2ecf20Sopenharmony_ci| plpaw and handle any exception here. The kernel must not be 1998c2ecf20Sopenharmony_ci| preempted until _060_unlock_page(), so that the page stays mapped. 2008c2ecf20Sopenharmony_ci| 2018c2ecf20Sopenharmony_ci .global _060_real_lock_page 2028c2ecf20Sopenharmony_ci_060_real_lock_page: 2038c2ecf20Sopenharmony_ci move.l %d2,-(%sp) 2048c2ecf20Sopenharmony_ci | load sfc/dfc 2058c2ecf20Sopenharmony_ci tst.b %d0 2068c2ecf20Sopenharmony_ci jne 1f 2078c2ecf20Sopenharmony_ci moveq #1,%d0 2088c2ecf20Sopenharmony_ci jra 2f 2098c2ecf20Sopenharmony_ci1: moveq #5,%d0 2108c2ecf20Sopenharmony_ci2: movec.l %dfc,%d2 2118c2ecf20Sopenharmony_ci movec.l %d0,%dfc 2128c2ecf20Sopenharmony_ci movec.l %d0,%sfc 2138c2ecf20Sopenharmony_ci 2148c2ecf20Sopenharmony_ci clr.l %d0 2158c2ecf20Sopenharmony_ci | prefetch address 2168c2ecf20Sopenharmony_ci .chip 68060 2178c2ecf20Sopenharmony_ci move.l %a0,%a1 2188c2ecf20Sopenharmony_ci1: plpaw (%a1) 2198c2ecf20Sopenharmony_ci addq.w #1,%a0 2208c2ecf20Sopenharmony_ci tst.b %d1 2218c2ecf20Sopenharmony_ci jeq 2f 2228c2ecf20Sopenharmony_ci addq.w #2,%a0 2238c2ecf20Sopenharmony_ci2: plpaw (%a0) 2248c2ecf20Sopenharmony_ci3: .chip 68k 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci | restore sfc/dfc 2278c2ecf20Sopenharmony_ci movec.l %d2,%dfc 2288c2ecf20Sopenharmony_ci movec.l %d2,%sfc 2298c2ecf20Sopenharmony_ci move.l (%sp)+,%d2 2308c2ecf20Sopenharmony_ci rts 2318c2ecf20Sopenharmony_ci 2328c2ecf20Sopenharmony_ci.section __ex_table,"a" 2338c2ecf20Sopenharmony_ci .align 4 2348c2ecf20Sopenharmony_ci .long 1b,11f 2358c2ecf20Sopenharmony_ci .long 2b,21f 2368c2ecf20Sopenharmony_ci.previous 2378c2ecf20Sopenharmony_ci.section .fixup,"ax" 2388c2ecf20Sopenharmony_ci .even 2398c2ecf20Sopenharmony_ci11: move.l #0x020003c0,%d0 2408c2ecf20Sopenharmony_ci or.l %d2,%d0 2418c2ecf20Sopenharmony_ci swap %d0 2428c2ecf20Sopenharmony_ci jra 3b 2438c2ecf20Sopenharmony_ci21: move.l #0x02000bc0,%d0 2448c2ecf20Sopenharmony_ci or.l %d2,%d0 2458c2ecf20Sopenharmony_ci swap %d0 2468c2ecf20Sopenharmony_ci jra 3b 2478c2ecf20Sopenharmony_ci.previous 2488c2ecf20Sopenharmony_ci 2498c2ecf20Sopenharmony_ci| 2508c2ecf20Sopenharmony_ci| _060_unlock_page(): 2518c2ecf20Sopenharmony_ci| 2528c2ecf20Sopenharmony_ci| Entry point for the operating system`s routine to "unlock" a 2538c2ecf20Sopenharmony_ci| page that has been "locked" previously with _real_lock_page. 2548c2ecf20Sopenharmony_ci| Note: the routine must unlock two pages if the operand spans 2558c2ecf20Sopenharmony_ci| two pages. 2568c2ecf20Sopenharmony_ci| Arguments: 2578c2ecf20Sopenharmony_ci| a0 = operand address 2588c2ecf20Sopenharmony_ci| d0 = `xxxxxxff -> supervisor; `xxxxxx00 -> user 2598c2ecf20Sopenharmony_ci| d1 = `xxxxxxff -> longword; `xxxxxx00 -> word 2608c2ecf20Sopenharmony_ci| 2618c2ecf20Sopenharmony_ci| Linux/m68k: perhaps reenable preemption here... 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ci .global _060_real_unlock_page 2648c2ecf20Sopenharmony_ci_060_real_unlock_page: 2658c2ecf20Sopenharmony_ci clr.l %d0 2668c2ecf20Sopenharmony_ci rts 2678c2ecf20Sopenharmony_ci 2688c2ecf20Sopenharmony_ci|########################################################################### 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci|################################# 2718c2ecf20Sopenharmony_ci| (2) EXAMPLE PACKAGE ENTRY CODE # 2728c2ecf20Sopenharmony_ci|################################# 2738c2ecf20Sopenharmony_ci 2748c2ecf20Sopenharmony_ci .global _060_isp_unimp 2758c2ecf20Sopenharmony_ci_060_isp_unimp: 2768c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x00 2778c2ecf20Sopenharmony_ci 2788c2ecf20Sopenharmony_ci .global _060_isp_cas 2798c2ecf20Sopenharmony_ci_060_isp_cas: 2808c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x08 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_ci .global _060_isp_cas2 2838c2ecf20Sopenharmony_ci_060_isp_cas2: 2848c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x10 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci .global _060_isp_cas_finish 2878c2ecf20Sopenharmony_ci_060_isp_cas_finish: 2888c2ecf20Sopenharmony_ci bra.l _I_CALL_TOP+0x80+0x18 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ci .global _060_isp_cas2_finish 2918c2ecf20Sopenharmony_ci_060_isp_cas2_finish: 2928c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x20 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_ci .global _060_isp_cas_inrange 2958c2ecf20Sopenharmony_ci_060_isp_cas_inrange: 2968c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x28 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ci .global _060_isp_cas_terminate 2998c2ecf20Sopenharmony_ci_060_isp_cas_terminate: 3008c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x30 3018c2ecf20Sopenharmony_ci 3028c2ecf20Sopenharmony_ci .global _060_isp_cas_restart 3038c2ecf20Sopenharmony_ci_060_isp_cas_restart: 3048c2ecf20Sopenharmony_ci bral _I_CALL_TOP+0x80+0x38 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_ci|########################################################################### 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci|############################### 3098c2ecf20Sopenharmony_ci| (3) EXAMPLE CALL-OUT SECTION # 3108c2ecf20Sopenharmony_ci|############################### 3118c2ecf20Sopenharmony_ci 3128c2ecf20Sopenharmony_ci| The size of this section MUST be 128 bytes!!! 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_ci_I_CALL_TOP: 3158c2ecf20Sopenharmony_ci .long _060_real_chk - _I_CALL_TOP 3168c2ecf20Sopenharmony_ci .long _060_real_divbyzero - _I_CALL_TOP 3178c2ecf20Sopenharmony_ci .long _060_real_trace - _I_CALL_TOP 3188c2ecf20Sopenharmony_ci .long _060_real_access - _I_CALL_TOP 3198c2ecf20Sopenharmony_ci .long _060_isp_done - _I_CALL_TOP 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_ci .long _060_real_cas - _I_CALL_TOP 3228c2ecf20Sopenharmony_ci .long _060_real_cas2 - _I_CALL_TOP 3238c2ecf20Sopenharmony_ci .long _060_real_lock_page - _I_CALL_TOP 3248c2ecf20Sopenharmony_ci .long _060_real_unlock_page - _I_CALL_TOP 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci .long 0x00000000, 0x00000000, 0x00000000, 0x00000000 3278c2ecf20Sopenharmony_ci .long 0x00000000, 0x00000000, 0x00000000 3288c2ecf20Sopenharmony_ci 3298c2ecf20Sopenharmony_ci .long _060_imem_read - _I_CALL_TOP 3308c2ecf20Sopenharmony_ci .long _060_dmem_read - _I_CALL_TOP 3318c2ecf20Sopenharmony_ci .long _060_dmem_write - _I_CALL_TOP 3328c2ecf20Sopenharmony_ci .long _060_imem_read_word - _I_CALL_TOP 3338c2ecf20Sopenharmony_ci .long _060_imem_read_long - _I_CALL_TOP 3348c2ecf20Sopenharmony_ci .long _060_dmem_read_byte - _I_CALL_TOP 3358c2ecf20Sopenharmony_ci .long _060_dmem_read_word - _I_CALL_TOP 3368c2ecf20Sopenharmony_ci .long _060_dmem_read_long - _I_CALL_TOP 3378c2ecf20Sopenharmony_ci .long _060_dmem_write_byte - _I_CALL_TOP 3388c2ecf20Sopenharmony_ci .long _060_dmem_write_word - _I_CALL_TOP 3398c2ecf20Sopenharmony_ci .long _060_dmem_write_long - _I_CALL_TOP 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci .long 0x00000000 3428c2ecf20Sopenharmony_ci .long 0x00000000, 0x00000000, 0x00000000, 0x00000000 3438c2ecf20Sopenharmony_ci 3448c2ecf20Sopenharmony_ci|########################################################################### 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_ci| 060 INTEGER KERNEL PACKAGE MUST GO HERE!!! 3478c2ecf20Sopenharmony_ci#include "isp.sa" 348