Annotation of hatari/tests/natfeats/nf_asmg.s, revision 1.1.1.1

1.1       root        1: /*
                      2:  * nf_asm.s - GCC NatFeats ASM detection code
                      3:  *
                      4:  * Copyright (c) 2014 by Eero Tamminen
                      5:  *
                      6:  * Mostly based on code from EmuTOS,
                      7:  * Copyright (c) 2001-2013 by the EmuTOS development team
                      8:  *
                      9:  * This file is distributed under the GPL, version 2 or at your
                     10:  * option any later version.
                     11:  *
                     12:  * TODO: test this
                     13:  */
                     14: 
                     15: /*
                     16:  * public interface
                     17:  */
                     18:         .globl  _nf_id
                     19:         .globl  _nf_call
                     20:         .globl  _detect_nf
                     21: 
                     22: /* illegal exception vector */
                     23:         .equ vec_illegal, 0x10
                     24: 
                     25: /*
                     26:  * code
                     27:  */
                     28:         .text
                     29: 
                     30: /*
                     31:  * NatFeats test
                     32:  *
                     33:  * Needs to be called from Supervisor mode,
                     34:  * otherwise exception handler change bombs
                     35:  */
                     36: _detect_nf:
                     37:         clr.l   d0               /* assume no NatFeats available */
                     38:         move.l  sp,a1
                     39:         move.l  vec_illegal,a0
                     40:         move.l  #fail_nf,vec_illegal
                     41:         pea     nf_version_name
                     42:         sub.l   #4,sp
                     43: #ifdef __mcoldfire__
                     44: #error Conflict with instruction mvs.b d0,d1
                     45: #else
                     46:         .dc.w   0x7300              /* Jump to NATFEAT_ID */
                     47: #endif
                     48:         tst.l   d0
                     49:         beq.s   fail_nf
                     50:         moveq   #1,d0               /* NatFeats detected */
                     51: 
                     52: fail_nf:
                     53:         move.l  a1,sp
                     54:         move.l  a0,vec_illegal
                     55: 
                     56:         rts
                     57: 
                     58: nf_version_name:
                     59:         .ascii  "NF_VERSION\0"
                     60:         .even
                     61: 
                     62: /*
                     63:  * map native features to NF ID
                     64:  */
                     65: _nf_id:
                     66:         .dc.w   0x7300  /* Conflict with ColdFire instruction mvs.b d0,d1 */
                     67:         rts
                     68: 
                     69: /*
                     70:  * call native feature by its ID
                     71:  */
                     72: _nf_call:
                     73:         .dc.w   0x7301  /* Conflict with ColdFire instruction mvs.b d1,d1 */
                     74:         rts

unix.superglobalmegacorp.com

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