//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); }
// ****************************************************************** // * 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); }