%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/lib/perl5/site_perl/mach/5.32/machine/
Upload File :
Create Path :
Current File : //usr/local/lib/perl5/site_perl/mach/5.32/machine/asmacros.ph

require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_MACHINE_ASMACROS_H_)) {
    eval 'sub _MACHINE_ASMACROS_H_ () {1;}' unless defined(&_MACHINE_ASMACROS_H_);
    require 'sys/cdefs.ph';
    eval 'sub CNAME {
        my($csym) = @_;
	    eval q($csym);
    }' unless defined(&CNAME);
    eval 'sub ALIGN_DATA () {. &p2align 3;}' unless defined(&ALIGN_DATA);
    if(defined(&GPROF)) {
	eval 'sub ALIGN_TEXT () {. &p2align 4,0x90;}' unless defined(&ALIGN_TEXT);
    } else {
	eval 'sub ALIGN_TEXT () {. &p2align 4,0x90;}' unless defined(&ALIGN_TEXT);
    }
    eval 'sub SUPERALIGN_TEXT () {. &p2align 4,0x90;}' unless defined(&SUPERALIGN_TEXT);
    eval 'sub GEN_ENTRY {
        my($name) = @_;
	    eval q( &ALIGN_TEXT; . &globl  &CNAME($name); . &type  &CNAME($name),@ &function;  &CNAME($name):);
    }' unless defined(&GEN_ENTRY);
    eval 'sub NON_GPROF_ENTRY {
        my($name) = @_;
	    eval q( &GEN_ENTRY($name));
    }' unless defined(&NON_GPROF_ENTRY);
    eval 'sub NON_GPROF_RET () {. &byte 0xc3;}' unless defined(&NON_GPROF_RET);
    eval 'sub END {
        my($name) = @_;
	    eval q(. &size $name, . - $name);
    }' unless defined(&END);
    if(defined(&GPROF)) {
	eval 'sub ALTENTRY {
	    my($name) = @_;
    	    eval q( &GEN_ENTRY($name) ;  &MCOUNT ;  &MEXITCOUNT ;  &jmp 9 &f);
	}' unless defined(&ALTENTRY);
	eval 'sub CROSSJUMP {
	    my($jtrue, $label, $jfalse) = @_;
    	    eval q($jfalse 8 &f;  &MEXITCOUNT;  &jmp  &__CONCAT( &to,$label); 8:);
	}' unless defined(&CROSSJUMP);
	eval 'sub CROSSJUMPTARGET {
	    my($label) = @_;
    	    eval q( &ALIGN_TEXT;  &__CONCAT( &to,$label): ;  &MCOUNT;  &jmp $label);
	}' unless defined(&CROSSJUMPTARGET);
	eval 'sub ENTRY {
	    my($name) = @_;
    	    eval q( &GEN_ENTRY($name) ; 9: ;  &MCOUNT);
	}' unless defined(&ENTRY);
	eval 'sub FAKE_MCOUNT {
	    my($caller) = @_;
    	    eval q( &pushq $caller ;  &call  &__mcount ;  &popq % &rcx);
	}' unless defined(&FAKE_MCOUNT);
	eval 'sub MCOUNT () { &call  &__mcount;}' unless defined(&MCOUNT);
	eval 'sub MCOUNT_LABEL {
	    my($name) = @_;
    	    eval q( &GEN_ENTRY($name) ;  &nop ;  &ALIGN_TEXT);
	}' unless defined(&MCOUNT_LABEL);
	if(defined(&GUPROF)) {
	    eval 'sub MEXITCOUNT () { &call . &mexitcount;}' unless defined(&MEXITCOUNT);
	    eval 'sub ret () { &MEXITCOUNT ;  &NON_GPROF_RET;}' unless defined(&ret);
	} else {
	    eval 'sub MEXITCOUNT () {1;}' unless defined(&MEXITCOUNT);
	}
    } else {
	eval 'sub ALTENTRY {
	    my($name) = @_;
    	    eval q( &GEN_ENTRY($name));
	}' unless defined(&ALTENTRY);
	eval 'sub CROSSJUMP {
	    my($jtrue, $label, $jfalse) = @_;
    	    eval q($jtrue $label);
	}' unless defined(&CROSSJUMP);
	eval 'sub CROSSJUMPTARGET {
	    my($label) = @_;
    	    eval q();
	}' unless defined(&CROSSJUMPTARGET);
	eval 'sub ENTRY {
	    my($name) = @_;
    	    eval q( &GEN_ENTRY($name));
	}' unless defined(&ENTRY);
	eval 'sub FAKE_MCOUNT {
	    my($caller) = @_;
    	    eval q();
	}' unless defined(&FAKE_MCOUNT);
	eval 'sub MCOUNT () {1;}' unless defined(&MCOUNT);
	eval 'sub MCOUNT_LABEL {
	    my($name) = @_;
    	    eval q();
	}' unless defined(&MCOUNT_LABEL);
	eval 'sub MEXITCOUNT () {1;}' unless defined(&MEXITCOUNT);
    }
    eval 'sub PUSH_FRAME_POINTER () { &pushq % &rbp ;  &movq % &rsp, % &rbp ;;}' unless defined(&PUSH_FRAME_POINTER);
    eval 'sub POP_FRAME_POINTER () { &popq % &rbp;}' unless defined(&POP_FRAME_POINTER);
    if(defined(&LOCORE)) {
	eval 'sub PCPU {
	    my($member) = @_;
    	    eval q(% &gs: &PC_  $member);
	}' unless defined(&PCPU);
	eval 'sub PCPU_ADDR {
	    my($member, $reg) = @_;
    	    eval q( &movq % &gs: &PC_PRVSPACE, $reg ;  &addq $ &PC_  $member, $reg);
	}' unless defined(&PCPU_ADDR);
	eval 'sub IDTVEC {
	    my($name) = @_;
    	    eval q( &ALIGN_TEXT; . &globl  &__CONCAT( &X,$name); . &type  &__CONCAT( &X,$name),@ &function;  &__CONCAT( &X,$name):);
	}' unless defined(&IDTVEC);
    }
    if(defined(&__STDC__)) {
	eval 'sub ELFNOTE () {( &name,  &type,  &desctype,  &descdata...) . &pushsection . ($note->{name})  ; . &align 4; .\'long 2f\' - 1 &f ; .\'long 4f\' - 3 &f ; .\'long type\' ; 1:. &asciz  &name ; 2:. &align 4; 3: &desctype  &descdata ; 4:. &align 4; . &popsection;}' unless defined(&ELFNOTE);
    } else {
	eval 'sub ELFNOTE {
	    my($name, $type, $desctype, $descdata) = @_;
    	    eval q(. &pushsection . ($note->{name})  ; . &align 4; .\'long 2f\' - 1 &f ; .\'long 4f\' - 3 &f ; .\'long type\' ; 1:. &asciz \\"name\\" ; 2:. &align 4; 3:$desctype $descdata ; 4:. &align 4; . &popsection);
	}' unless defined(&ELFNOTE);
    }
}
1;

Zerion Mini Shell 1.0