Enabling Software Security Mechanisms Through Architectural Support