Runtime Support for Heterogeneous Multi-core Systems