mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 03:39:40 +01:00 
			
		
		
		
	- m68k: removed garbage (tab characters, commented out code, unused variables, debug output and alike). Functionality unchanged.
git-svn-id: trunk@28070 -
This commit is contained in:
		
							parent
							
								
									f7dd4f640a
								
							
						
					
					
						commit
						3ffa32a660
					
				@ -19,8 +19,6 @@
 | 
			
		||||
 | 
			
		||||
 ****************************************************************************
 | 
			
		||||
}
 | 
			
		||||
{ Generates the argument location information for 680x0.
 | 
			
		||||
}
 | 
			
		||||
unit cpupara;
 | 
			
		||||
 | 
			
		||||
{$i fpcdefs.inc}
 | 
			
		||||
@ -113,65 +111,6 @@ unit cpupara;
 | 
			
		||||
           end;
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
    function getparaloc(p : tdef) : tcgloc;
 | 
			
		||||
 | 
			
		||||
      begin
 | 
			
		||||
         result:=LOC_REFERENCE;
 | 
			
		||||
         (* Later, the LOC_REFERENCE is in most cases changed into LOC_REGISTER
 | 
			
		||||
           if push_addr_param for the def is true
 | 
			
		||||
         case p.typ of
 | 
			
		||||
            orddef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            floatdef:
 | 
			
		||||
              result:=LOC_FPUREGISTER;
 | 
			
		||||
            enumdef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            pointerdef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            formaldef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            classrefdef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            recorddef:
 | 
			
		||||
              if (target_info.abi<>abi_powerpc_aix) then
 | 
			
		||||
                result:=LOC_REFERENCE
 | 
			
		||||
              else
 | 
			
		||||
                result:=LOC_REGISTER;
 | 
			
		||||
            objectdef:
 | 
			
		||||
              if is_object(p) then
 | 
			
		||||
                result:=LOC_REFERENCE
 | 
			
		||||
              else
 | 
			
		||||
                result:=LOC_REGISTER;
 | 
			
		||||
            stringdef:
 | 
			
		||||
              if is_shortstring(p) or is_longstring(p) then
 | 
			
		||||
                result:=LOC_REFERENCE
 | 
			
		||||
              else
 | 
			
		||||
                result:=LOC_REGISTER;
 | 
			
		||||
            procvardef:
 | 
			
		||||
              if (po_methodpointer in tprocvardef(p).procoptions) then
 | 
			
		||||
                result:=LOC_REFERENCE
 | 
			
		||||
              else
 | 
			
		||||
                result:=LOC_REGISTER;
 | 
			
		||||
            filedef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            arraydef:
 | 
			
		||||
              result:=LOC_REFERENCE;
 | 
			
		||||
            setdef:
 | 
			
		||||
              if is_smallset(p) then
 | 
			
		||||
                result:=LOC_REGISTER
 | 
			
		||||
              else
 | 
			
		||||
                result:=LOC_REFERENCE;
 | 
			
		||||
            variantdef:
 | 
			
		||||
              result:=LOC_REFERENCE;
 | 
			
		||||
            { avoid problems with errornous definitions }
 | 
			
		||||
            errordef:
 | 
			
		||||
              result:=LOC_REGISTER;
 | 
			
		||||
            else
 | 
			
		||||
              internalerror(2002071001);
 | 
			
		||||
         end;
 | 
			
		||||
         *)
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{ TODO: copied from ppc cg, needs work}
 | 
			
		||||
    function tm68kparamanager.push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;
 | 
			
		||||
@ -296,29 +235,21 @@ unit cpupara;
 | 
			
		||||
        hp           : tparavarsym;
 | 
			
		||||
        paracgsize   : tcgsize;
 | 
			
		||||
        paralen      : aint;
 | 
			
		||||
        parasize     : longint;
 | 
			
		||||
	paradef      : tdef;
 | 
			
		||||
        paradef      : tdef;
 | 
			
		||||
        i            : longint;
 | 
			
		||||
	loc          : tcgloc;
 | 
			
		||||
	nextintreg,
 | 
			
		||||
	nextfloatreg : tsuperregister;
 | 
			
		||||
	stack_offset : longint;
 | 
			
		||||
        stack_offset : longint;
 | 
			
		||||
        firstparaloc : boolean;
 | 
			
		||||
 | 
			
		||||
      begin
 | 
			
		||||
        result:=0;
 | 
			
		||||
	nextintreg:=curintreg;
 | 
			
		||||
	nextfloatreg:=curfloatreg;
 | 
			
		||||
	stack_offset:=cur_stack_offset;
 | 
			
		||||
 | 
			
		||||
        parasize:=0;
 | 
			
		||||
        stack_offset:=cur_stack_offset;
 | 
			
		||||
 | 
			
		||||
        for i:=0 to paras.count-1 do
 | 
			
		||||
          begin
 | 
			
		||||
            hp:=tparavarsym(paras[i]);
 | 
			
		||||
	    paradef:=hp.vardef;
 | 
			
		||||
            paradef:=hp.vardef;
 | 
			
		||||
 | 
			
		||||
	    { syscall for AmigaOS can have already a paraloc set }
 | 
			
		||||
            { syscall for AmigaOS can have already a paraloc set }
 | 
			
		||||
            if (vo_has_explicit_paraloc in hp.varoptions) then
 | 
			
		||||
              begin
 | 
			
		||||
                if not(vo_is_syscall_lib in hp.varoptions) then
 | 
			
		||||
@ -331,13 +262,10 @@ unit cpupara;
 | 
			
		||||
            if (p.proccalloption in cstylearrayofconst) and
 | 
			
		||||
               is_array_of_const(paradef) then
 | 
			
		||||
              begin
 | 
			
		||||
{$ifdef DEBUG_CHARLIE}
 | 
			
		||||
                writeln('loc register');
 | 
			
		||||
{$endif DEBUG_CHARLIE}
 | 
			
		||||
                paraloc:=hp.paraloc[side].add_location;
 | 
			
		||||
                { hack: the paraloc must be valid, but is not actually used }
 | 
			
		||||
                paraloc^.loc:=LOC_REGISTER;
 | 
			
		||||
		paraloc^.register:=NR_D0;
 | 
			
		||||
                paraloc^.register:=NR_D0;
 | 
			
		||||
                paraloc^.size:=OS_ADDR;
 | 
			
		||||
                paraloc^.def:=voidpointertype;
 | 
			
		||||
                break;
 | 
			
		||||
@ -345,11 +273,7 @@ unit cpupara;
 | 
			
		||||
 | 
			
		||||
            if push_addr_param(hp.varspez,paradef,p.proccalloption) then
 | 
			
		||||
              begin
 | 
			
		||||
{$ifdef DEBUG_CHARLIE}
 | 
			
		||||
                writeln('loc register');
 | 
			
		||||
{$endif DEBUG_CHARLIE}
 | 
			
		||||
                paradef:=getpointerdef(paradef);
 | 
			
		||||
                loc:=LOC_REGISTER;
 | 
			
		||||
                paracgsize := OS_ADDR;
 | 
			
		||||
                paralen := tcgsize2size[OS_ADDR];
 | 
			
		||||
              end
 | 
			
		||||
@ -360,7 +284,6 @@ unit cpupara;
 | 
			
		||||
                else
 | 
			
		||||
                  paralen:=tcgsize2size[def_cgsize(paradef)];
 | 
			
		||||
 | 
			
		||||
                loc:=getparaloc(paradef);
 | 
			
		||||
                paracgsize:=def_cgsize(paradef);
 | 
			
		||||
                { for things like formaldef }
 | 
			
		||||
                if (paracgsize=OS_NO) then
 | 
			
		||||
@ -388,90 +311,30 @@ unit cpupara;
 | 
			
		||||
            while (paralen > 0) do
 | 
			
		||||
              begin
 | 
			
		||||
                paraloc:=hp.paraloc[side].add_location;
 | 
			
		||||
                (*
 | 
			
		||||
                  by default, the m68k doesn't know any register parameters  (FK)
 | 
			
		||||
                if (loc = LOC_REGISTER) and
 | 
			
		||||
                   (nextintreg <= RS_D2) then
 | 
			
		||||
                  begin
 | 
			
		||||
		    //writeln('loc register');
 | 
			
		||||
                    paraloc^.loc := loc;
 | 
			
		||||
                    { make sure we don't lose whether or not the type is signed }
 | 
			
		||||
                    if (paradef.typ <> orddef) then
 | 
			
		||||
                      paracgsize := int_cgsize(paralen);
 | 
			
		||||
                    if (paracgsize in [OS_NO,OS_64,OS_S64]) then
 | 
			
		||||
                      paraloc^.size := OS_INT
 | 
			
		||||
                    else
 | 
			
		||||
                      paraloc^.size := paracgsize;
 | 
			
		||||
                    paraloc^.register:=newreg(R_INTREGISTER,nextintreg,R_SUBNONE);
 | 
			
		||||
                    inc(nextintreg);
 | 
			
		||||
                    dec(paralen,tcgsize2size[paraloc^.size]);
 | 
			
		||||
                  end
 | 
			
		||||
                else if (loc = LOC_FPUREGISTER) and
 | 
			
		||||
                        (nextfloatreg <= RS_FP2) then
 | 
			
		||||
                  begin
 | 
			
		||||
//		    writeln('loc fpuregister');
 | 
			
		||||
                    paraloc^.loc:=loc;
 | 
			
		||||
                    paraloc^.size := paracgsize;
 | 
			
		||||
                    paraloc^.register:=newreg(R_FPUREGISTER,nextfloatreg,R_SUBWHOLE);
 | 
			
		||||
                    inc(nextfloatreg);
 | 
			
		||||
                    dec(paralen,tcgsize2size[paraloc^.size]);
 | 
			
		||||
                  end
 | 
			
		||||
                else { LOC_REFERENCE }
 | 
			
		||||
                *)
 | 
			
		||||
                  begin
 | 
			
		||||
{$ifdef DEBUG_CHARLIE}
 | 
			
		||||
		    writeln('loc reference');
 | 
			
		||||
{$endif DEBUG_CHARLIE}
 | 
			
		||||
                    paraloc^.loc:=LOC_REFERENCE;
 | 
			
		||||
                    paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
 | 
			
		||||
                    if paradef.typ<>orddef then
 | 
			
		||||
                      paracgsize:=int_cgsize(paralen);
 | 
			
		||||
                    if paracgsize=OS_NO then
 | 
			
		||||
                      paraloc^.size:=OS_INT
 | 
			
		||||
                    else
 | 
			
		||||
                      paraloc^.size:=paracgsize;
 | 
			
		||||
                    if (side = callerside) then
 | 
			
		||||
                      paraloc^.reference.index:=NR_STACK_POINTER_REG
 | 
			
		||||
                    else
 | 
			
		||||
                      paraloc^.reference.index:=NR_FRAME_POINTER_REG;
 | 
			
		||||
                    paraloc^.reference.offset:=stack_offset;
 | 
			
		||||
                    inc(stack_offset,align(paralen,4));
 | 
			
		||||
                    paralen := 0;
 | 
			
		||||
                  end;
 | 
			
		||||
 | 
			
		||||
                paraloc^.loc:=LOC_REFERENCE;
 | 
			
		||||
                paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
 | 
			
		||||
                if paradef.typ<>orddef then
 | 
			
		||||
                  paracgsize:=int_cgsize(paralen);
 | 
			
		||||
                if paracgsize=OS_NO then
 | 
			
		||||
                  paraloc^.size:=OS_INT
 | 
			
		||||
                else
 | 
			
		||||
                  paraloc^.size:=paracgsize;
 | 
			
		||||
                if (side = callerside) then
 | 
			
		||||
                  paraloc^.reference.index:=NR_STACK_POINTER_REG
 | 
			
		||||
                else
 | 
			
		||||
                  paraloc^.reference.index:=NR_FRAME_POINTER_REG;
 | 
			
		||||
                paraloc^.reference.offset:=stack_offset;
 | 
			
		||||
                inc(stack_offset,align(paralen,4));
 | 
			
		||||
                paralen := 0;
 | 
			
		||||
 | 
			
		||||
                firstparaloc:=false;
 | 
			
		||||
              end;
 | 
			
		||||
          end;
 | 
			
		||||
         result:=stack_offset;
 | 
			
		||||
//	 writeln('stack offset:',stack_offset);
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
            if push_addr_param(hp.varspez,paradef,p.proccalloption) then
 | 
			
		||||
              paracgsize:=OS_ADDR
 | 
			
		||||
            else
 | 
			
		||||
              begin
 | 
			
		||||
                paracgsize:=def_cgsize(paradef);
 | 
			
		||||
                if paracgsize=OS_NO then
 | 
			
		||||
                  paracgsize:=OS_ADDR;
 | 
			
		||||
              end;
 | 
			
		||||
            hp.paraloc[side].size:=paracgsize;
 | 
			
		||||
            hp.paraloc[side].Alignment:=std_param_align;
 | 
			
		||||
            paraloc:=hp.paraloc[side].add_location;
 | 
			
		||||
            paraloc^.size:=paracgsize;
 | 
			
		||||
            paraloc^.loc:=LOC_REFERENCE;
 | 
			
		||||
            if side=callerside then
 | 
			
		||||
              paraloc^.reference.index:=NR_STACK_POINTER_REG
 | 
			
		||||
            else
 | 
			
		||||
              paraloc^.reference.index:=NR_FRAME_POINTER_REG;
 | 
			
		||||
            paraloc^.reference.offset:=target_info.first_parm_offset+parasize;
 | 
			
		||||
          end;
 | 
			
		||||
	create_funcretloc_info(p,side);
 | 
			
		||||
        result:=parasize;
 | 
			
		||||
      end;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    function tm68kparamanager.parse_loc_string_to_register(var locreg: tregister; const s : string): boolean;
 | 
			
		||||
      begin
 | 
			
		||||
        locreg:=std_regnum_search(lowercase(s));
 | 
			
		||||
@ -516,10 +379,7 @@ unit cpupara;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure tm68kparamanager.createtempparaloc(list: TAsmList;calloption : tproccalloption;parasym : tparavarsym;can_use_final_stack_loc : boolean;var cgpara:TCGPara);
 | 
			
		||||
      var
 | 
			
		||||
        paraloc : pcgparalocation;
 | 
			
		||||
      begin
 | 
			
		||||
        paraloc:=parasym.paraloc[callerside].location;
 | 
			
		||||
        { Never a need for temps when value is pushed (calls inside parameters
 | 
			
		||||
          will simply allocate even more stack space for their parameters) }
 | 
			
		||||
        if not(use_fixed_stack) then
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user