#ifndef _rename_alloc_fs #define _rename_alloc_fs /****************************************************************************** ** FILE: rename_alloc.fs ** Restrict the number of available physical registers. */ #include "param.h" #include "rename_regs.h" #include "rename_types.fs" #include "rename_data.fs" /////////////////////////////////////////////////////////////////////////////// // Limit the quantity of physical registers in use. // rmap_alloc() -- reserve a physical register // rmap_free() -- return register to free pool // fun rmap_alloc(rtype,num) { val preg = rtype_to_preg_map[rtype]; val num2 = num_regs_allocated[preg] + num; if(num2 > num_physical_regs[preg]) return false; num_regs_allocated[preg] = num2; return true; } fun rmap_free(rtype,num) { val preg = rtype_to_preg_map[rtype]; assert(num_regs_allocated[preg] >= num); num_regs_allocated[preg] = num_regs_allocated[preg] - num; } #endif