|  |  | 
|  | /* Print "pass\n" and 'exit 0'  */ | 
|  | .macro      pass | 
|  | .data | 
|  | mpass: | 
|  | .string "pass\n" | 
|  | .text | 
|  | _pass: | 
|  | lddw        %r1, mpass      /* point to "pass\n" string */ | 
|  | mov         %r2, 5          /* strlen mpass */ | 
|  | call        7               /* printk */ | 
|  | mov         %r0, 0 | 
|  | exit                        /* exit 0 */ | 
|  | .endm | 
|  |  | 
|  | /* MACRO fail | 
|  | Exit with status 1 */ | 
|  | .macro fail | 
|  | mov %r0, 1 | 
|  | exit | 
|  | .endm | 
|  |  | 
|  | /* MACRO fail_ne32 | 
|  | Exit with status 1 if \reg32 != \val */ | 
|  | .macro      fail_ne32 reg val | 
|  | jeq32       \reg, \val, 2 | 
|  | mov         %r0, 1 | 
|  | exit | 
|  | .endm | 
|  |  | 
|  | /* MACRO fail_ne | 
|  | Exit with status1 if \reg ne \val */ | 
|  | .macro      fail_ne reg val | 
|  | lddw        %r0, \val | 
|  | jeq         \reg, %r0, 2 | 
|  | mov         %r0, 1 | 
|  | exit | 
|  | .endm |