Esempio n. 1
0
//set info_type to type of return expression
node * CTreturn(node *arg_node, info *arg_info){
	DBUG_ENTER("CTreturn");

	// confirm fun has return
	INFO_HASRETURN(arg_info) = 1;

	if(RETURN_EXPRESSION(arg_node) == NULL){
		INFO_FUNTYPE(arg_info) = T_unknown;
		RETURN_TYPE(arg_node) = T_unknown;
	}
	else{
		RETURN_EXPRESSION(arg_node) = TRAVdo(RETURN_EXPRESSION(arg_node), arg_info);
		RETURN_TYPE(arg_node) = INFO_TYPE(arg_info);
		INFO_FUNTYPE(arg_info) = INFO_TYPE(arg_info);
	}

	DBUG_RETURN(arg_node);
}
Esempio n. 2
0
// ******************************************************************
// * 0x00A0 - KfRaiseIrql()
// ******************************************************************
// Raises the hardware priority (irq level)
// NewIrql = Irq level to raise to
// RETURN VALUE previous irq level
XBSYSAPI EXPORTNUM(160) xboxkrnl::KIRQL FASTCALL xboxkrnl::KfRaiseIrql
(
    IN KIRQL NewIrql
)
{
	LOG_FUNC_ONE_ARG_TYPE(KIRQL_TYPE, NewIrql);

	// Inlined KeGetCurrentIrql() :
	PKPCR Pcr = KeGetPcr();
	KIRQL OldIrql = (KIRQL)Pcr->Irql;

	// Set new before check
	Pcr->Irql = NewIrql;

	if (NewIrql < OldIrql)	{
		Pcr->Irql = 0; // Probably to avoid recursion?
		KeBugCheckEx(IRQL_NOT_GREATER_OR_EQUAL, (PVOID)OldIrql, (PVOID)NewIrql, 0, 0);
	}

	RETURN_TYPE(KIRQL_TYPE, OldIrql);
}