':param arch:        The Archinfo arch for this CC
:param args:        A list of SimFunctionArguments describing where the arguments go
:param ret_val:     A SimFunctionArgument describing where the return value goes
:param sp_delta:    The amount the stack pointer changes over the course of this function - CURRENTLY UNUSED
:parmm func_ty:     A SimType for the function itself'

def __init__(self, arch, args=None, ret_val=None, sp_delta=None, func_ty=None):

    if (func_ty is not None):
        if (not isinstance(func_ty, SimTypeFunction)):
            raise TypeError('Function    prototype    must    be    a    function!')
    self.arch = arch
    self.args = args
    self.ret_val = ret_val
    self.sp_delta = sp_delta
    self.func_ty = (func_ty if (func_ty is None) else func_ty.with_arch(arch))
