diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c
index 9832605..1a028be 100644
--- a/cachegrind/cg_main.c
+++ b/cachegrind/cg_main.c
@@ -491,7 +491,7 @@
    uCCall(cb, helper, argc, argc, False);
 }
 
-UCodeBlock* SK_(instrument)(UCodeBlock* cb_in, Addr orig_addr)
+UCodeBlock* TL_(instrument)(UCodeBlock* cb_in, Addr orig_addr)
 {
    UCodeBlock* cb;
    UInstr*     u_in;
@@ -762,7 +762,7 @@
 }
 
 /*------------------------------------------------------------*/
-/*--- SK_(fini)() and related function                     ---*/
+/*--- TL_(fini)() and related function                     ---*/
 /*------------------------------------------------------------*/
 
 // Total reads/writes/misses.  Calculated during CC traversal at the end.
@@ -901,7 +901,7 @@
    for (i = 0; i < space; i++)  buf[i] = ' ';
 }
 
-void SK_(fini)(Int exitcode)
+void TL_(fini)(Int exitcode)
 {
    static char buf1[128], buf2[128], buf3[128], fmt [128];
 
@@ -1024,7 +1024,7 @@
 /*--------------------------------------------------------------------*/
 
 // Called when a translation is invalidated due to code unloading.
-void SK_(discard_basic_block_info) ( Addr a, SizeT size )
+void TL_(discard_basic_block_info) ( Addr a, SizeT size )
 {
    VgHashNode** prev_next_ptr;
    VgHashNode*  bb_info;
@@ -1074,7 +1074,7 @@
    VG_(bad_option)(opt);
 }
 
-Bool SK_(process_cmd_line_option)(Char* arg)
+Bool TL_(process_cmd_line_option)(Char* arg)
 {
    // 5 is length of "--I1="
    if      (VG_CLO_STREQN(5, arg, "--I1="))
@@ -1089,7 +1089,7 @@
    return True;
 }
 
-void SK_(print_usage)(void)
+void TL_(print_usage)(void)
 {
    VG_(printf)(
 "    --I1=<size>,<assoc>,<line_size>  set I1 cache manually\n"
@@ -1098,7 +1098,7 @@
    );
 }
 
-void SK_(print_debug_usage)(void)
+void TL_(print_debug_usage)(void)
 {
    VG_(printf)(
 "    (none)\n"
@@ -1109,7 +1109,7 @@
 /*--- Setup                                                        ---*/
 /*--------------------------------------------------------------------*/
 
-void SK_(pre_clo_init)(void)
+void TL_(pre_clo_init)(void)
 {
    Char* base_dir = NULL;
 
@@ -1141,7 +1141,7 @@
    instr_info_table = VG_(HT_construct)();
 }
 
-void SK_(post_clo_init)(void)
+void TL_(post_clo_init)(void)
 {
    cache_t I1c, D1c, L2c; 
 
@@ -1156,7 +1156,7 @@
    VGP_(register_profile_event)(VgpCacheResults,  "cache-results");
 }
 
-VG_DETERMINE_INTERFACE_VERSION(SK_(pre_clo_init), 0)
+VG_DETERMINE_INTERFACE_VERSION(TL_(pre_clo_init), 0)
 
 /*--------------------------------------------------------------------*/
 /*--- end                                                cg_main.c ---*/
