Loading...
--- xnu/xnu-792.13.8/kgmacros
+++ xnu/xnu-517.7.21/kgmacros
@@ -6,8 +6,8 @@
 #
 #  All the convenience variables used by these macros begin with $kgm_
 
-set print asm-demangle on
-set cp-abi gnu-v2
+set $kgm_dummy = &proc0
+set $kgm_dummy = &kmod
 
 echo Loading Kernel GDB Macros package.  Type "help kgm" for more info.\n
 
@@ -24,7 +24,6 @@
 |     (gdb) attach <name-of-remote-host>
 |
 | The following macros are available in this package:
-|     showversion    Displays a string describing the remote kernel version
 |
 |     showalltasks   Display a summary listing of all tasks
 |     showallthreads Display info about all threads in the system
@@ -36,13 +35,6 @@
 |     showallipc     Display a summary listing of all the ipc spaces
 |     showallrights  Display a summary listing of all the ipc rights
 |     showallkmods   Display a summary listing of all the kernel modules
-|
-|     showallclasses    Display info about all OSObject subclasses in the system
-|     showobject        Show info about an OSObject - its vtable ptr and retain count, & more info for simple container classes.
-|     showregistry      Show info about all registry entries in the current plane
-|     showregistryprops Show info about all registry entries in the current plane, and their properties
-|     showregistryentry Show info about a registry entry; its properties and descendants in the current plane
-|     setregistryplane  Set the plane to be used for the iokit registry macros (pass zero for list)
 |
 |     showtask       Display info about the specified task
 |     showtaskthreads      Display info about the threads in the task
@@ -69,68 +61,19 @@
 |
 |     dumpcallqueue  Dump out all the entries given a queue head
 |
-|     showallmtx     Display info about mutexes usage
-|     showallrwlck   Display info about reader/writer locks usage
-|
 |     zprint         Display info about the memory zones
-|     showioalloc    Display info about iokit allocations
 |     paniclog       Display the panic log info
 |
 |     switchtoact    Switch to different context specified by activation
 |     switchtoctx    Switch to different context
-|     showuserstack  Display numeric backtrace of the user stack for an 
-|     		     activation
-|
-|     switchtouserthread Switch to the user context of the specified thread
-|     resetstacks    Return to the original kernel context
-|
 |     resetctx       Reset context
 |     resume_on      Resume when detaching from gdb
 |     resume_off     Don't resume when detaching from gdb 
 |
-|     sendcore	     Configure kernel to send a coredump to the specified IP
-|     disablecore    Configure the kernel to disable coredump transmission
-|     switchtocorethread Corefile version of "switchtoact"
-|     resetcorectx   Corefile version of "resetctx"
-|
-|     readphys       Reads the specified untranslated address
-|     readphys64     Reads the specified untranslated 64-bit address
-|
-|     kdp-reboot     Restart remote target
-|	
 | Type "help <macro>" for more specific help on a particular macro.
 | Type "show user <macro>" to see what the macro is really doing.
 end
 
-# This macro should appear before any symbol references, to facilitate
-# a gdb "source" without a loaded symbol file.
-define showversion
-       printf "%s\n", *(char **)0x501C
-end
-
-document showversion
-Syntax: showversion
-| Read the kernel version string from a fixed address in low
-| memory. Useful if you don't know which kernel is on the other end,
-| and need to find the appropriate symbols. Beware that if you've
-| loaded a symbol file, but aren't connected to a remote target,
-| the version string from the symbol file will be displayed instead.
-| This macro expects to be connected to the remote kernel to function
-| correctly.
-end
-
-set $kgm_dummy = &proc0
-set $kgm_dummy = &kmod
-set $kgm_mtype = ((struct mach_header)_mh_execute_header).cputype
-
-set $kgm_reg_depth = 0
-set $kgm_reg_plane = (void **) gIOServicePlane
-set $kgm_namekey = (OSSymbol *) 0
-set $kgm_childkey = (OSSymbol *) 0
-
-set $kgm_show_object_addrs = 0
-set $kgm_show_object_retain = 0
-set $kgm_show_props = 0
 
 define showkmodheader
     printf "kmod        address     size        "
@@ -155,7 +98,7 @@
 set $kgm_pkmod = 0
 set $kgm_pkmodst = 0
 set $kgm_pkmoden = 0
-define showkmodaddrint
+define showkmodaddr
     printf "0x%x" , $arg0
     if ((unsigned int)$arg0 >= (unsigned int)$kgm_pkmodst) && ((unsigned int)$arg0 <= (unsigned int)$kgm_pkmoden)
 	set $kgm_off = ((unsigned int)$arg0 - (unsigned int)$kgm_pkmodst)
@@ -169,7 +112,7 @@
 		    set $kgm_kmodmin = $kgm_kmod.address
 		end
 		if ($kgm_kmod.address + $kgm_kmod.size) > $kgm_kmodmax
-	    	    set $kgm_kmodmax = $kgm_kmod.address + $kgm_kmod.size
+	    	    set $kgm_kmodmax = $kgm_kmod.address
 	    	end
 	        set $kgm_off = ((unsigned int)$arg0 - (unsigned int)$kgm_kmod.address)
 	        if ($kgm_kmod.address <= $arg0) && ($kgm_off <= $kgm_kmod.size)
@@ -189,12 +132,6 @@
 	end
     end
 end
-
-define showkmodaddr
-    showkmodaddrint $arg0
-    printf "\n"
-end
-
 document showkmodaddr
 | Given an address, print the offset and name for the kmod containing it
 | The following is the syntax:
@@ -232,9 +169,11 @@
 
 
 define showactint
-	printf "            0x%08x  ", $arg0
-	set $kgm_thread = *(struct thread *)$arg0
-	printf "0x%08x  ", $arg0
+   printf "            0x%08x  ", $arg0
+   set $kgm_actp = *(struct thread *)$arg0
+   if $kgm_actp.thread
+	set $kgm_thread = *$kgm_actp.thread
+	printf "0x%08x  ", $kgm_actp.thread
 	printf "%3d  ", $kgm_thread.sched_pri
 	set $kgm_state = $kgm_thread.state
 	if $kgm_state & 0x80
@@ -261,12 +200,7 @@
    	if $kgm_state & 0x01
 	    printf "W\t" 
 	    printf "0x%08x  ", $kgm_thread.wait_queue
-	    	if (((unsigned)$kgm_thread.wait_event > (unsigned)sectPRELINKB) \
-		    && ($arg1 != 2))
-			showkmodaddr $kgm_thread.wait_event
-	        else
-			output /a (unsigned) $kgm_thread.wait_event
-		end
+	    output /a $kgm_thread.wait_event
 	end
 	if $arg1 != 0
 	    if ($kgm_thread.kernel_stack != 0)
@@ -274,57 +208,44 @@
 			printf "\n\t\treserved_stack=0x%08x", $kgm_thread.reserved_stack
 		end
 		printf "\n\t\tkernel_stack=0x%08x", $kgm_thread.kernel_stack
-		if ($kgm_mtype == 18)
-			set $mysp = $kgm_thread.machine.pcb->save_r1
+		if (machine_slot[0].cpu_type == 18)
+			set $mysp = $kgm_actp->mact.pcb->save_r1
 		else
-			set $kgm_statep = (struct x86_kernel_state32 *) \
-				($kgm_thread->kernel_stack + 0x4000 \
-				 - sizeof(struct x86_kernel_state32))
+			set $kgm_statep = (struct i386_kernel_state *)($kgm_thread->kernel_stack + 0x4000 - sizeof(stru\
+ct i386_kernel_state))
 			set $mysp = $kgm_statep->k_ebp
 		end
-		set $prevsp = $mysp - 16
+		set $prevsp = 0
 		printf "\n\t\tstacktop=0x%08x", $mysp
-		if ($kgm_mtype == 18)
-			set $stkmask = 0xf
-		else
-			set $stkmask = 0x3
+	    	while ($mysp != 0) && (($mysp & 0xf) == 0) && ($mysp < 0xb0000000) && ($mysp > $prevsp)
+				printf "\n\t\t0x%08x  ", $mysp
+				if (machine_slot[0].cpu_type == 18)
+					set $kgm_return = *($mysp + 8)
+				else
+					set $kgm_return = *($mysp + 4)
+				end
+				if ($kgm_return > sectPRELINKB)
+				    showkmodaddr $kgm_return
+				else
+				if (machine_slot[0].cpu_type == 18)
+				    output /a * ($mysp + 8)
+				else
+				    output /a * ($mysp + 4)
+				end
+				end
+				set $prevsp = $mysp
+				set $mysp = * $mysp
 		end
-		set $kgm_return = 0
-	    	while ($mysp != 0) && (($mysp & $stkmask) == 0) \
-		      && ($mysp != $prevsp) \
-		      && ((((unsigned) $mysp ^ (unsigned) $prevsp) < 0x2000) \
-		      || (((unsigned)$mysp < ((unsigned) ($kgm_thread->kernel_stack+0x4000))) \
-		      && ((unsigned)$mysp > (unsigned) ($kgm_thread->kernel_stack))))
-
-			if ((unsigned) $kgm_return > (unsigned) sectPRELINKB)
-			    showkmodaddr $kgm_return
-			else
-				if ((unsigned) $kgm_return > 0)
-				    output /a (unsigned) $kgm_return
-				end
-			end
-			printf "\n\t\t0x%08x  ", $mysp
-			if ($kgm_mtype == 18)
-				set $kgm_return = *($mysp + 8)
-			else
-				set $kgm_return = *($mysp + 4)
-			end
-			set $prevsp = $mysp
-			set $mysp = * $mysp
-		end
-		if ((unsigned) $kgm_return > 0)
-		   output/a $kgm_return
-		end
-		set $kgm_return = 0
 		printf "\n\t\tstackbottom=0x%08x", $prevsp
 	    else
 		printf "\n\t\t\tcontinuation="
-		output /a (unsigned) $kgm_thread.continuation
+		output /a $kgm_thread.continuation
 	    end
 	    printf "\n"
 	else
 	    printf "\n"
 	end
+    end
 end	    
 
 define showact
@@ -373,17 +294,19 @@
 end
 
 define showcurrentthreads
-set $kgm_prp = processor_list
-    while $kgm_prp != 0
-	if ($kgm_prp)->active_thread != 0
-	    set $kgm_actp = ($kgm_prp)->active_thread
+set $kgm_ncpus = machine_info.max_cpus
+set $kgm_i = 0
+    while $kgm_i < $kgm_ncpus
+	set $kgm_prp = processor_ptr[$kgm_i]
+	if ($kgm_prp != 0) && (($kgm_prp)->active_thread != 0)
+	    set $kgm_actp = (($kgm_prp)->active_thread)->top_act
 	    showtaskheader
 	    showtaskint ($kgm_actp)->task
 	    showactheader
 	    showactint $kgm_actp 0
 	    printf "\n"
 	end
-	set $kgm_prp = ($kgm_prp)->processor_list
+	set $kgm_i = $kgm_i + 1
     end
 end
 document showcurrentthreads
@@ -392,7 +315,6 @@
 |     (gdb) showcurrentthreads
 end
 
-set $decode_wait_events = 0
 define showallstacks
     set $kgm_head_taskp = &default_pset.tasks
     set $kgm_taskp = (struct task *)($kgm_head_taskp->next)
@@ -403,42 +325,35 @@
         set $kgm_actp = (struct thread *)($kgm_taskp->threads.next)
 	while $kgm_actp != $kgm_head_actp
 	    showactheader
-	    if ($decode_wait_events > 0)
-	       showactint $kgm_actp 1
-	    else
-	       showactint $kgm_actp 2
-	    end
+	    showactint $kgm_actp 1
   	    set $kgm_actp = (struct thread *)($kgm_actp->task_threads.next)
         end
 	printf "\n"
     	set $kgm_taskp = (struct task *)($kgm_taskp->pset_tasks.next)
     end
 end
-
 document showallstacks
 | Routine to print out the stack for each thread in the system.
 | The following is the syntax:
 |     (gdb) showallstacks
-| If the variable $decode_wait_events is non-zero, the routine attempts to
-| interpret thread wait_events as kernel module offsets, which can add to
-| processing time.
 end
 
 define showcurrentstacks
-set $kgm_prp = processor_list
-    while $kgm_prp != 0
-	if ($kgm_prp)->active_thread != 0
-	    set $kgm_actp = ($kgm_prp)->active_thread
+set $kgm_ncpus = machine_info.max_cpus
+set $kgm_i = 0
+    while $kgm_i < $kgm_ncpus
+	set $kgm_prp = processor_ptr[$kgm_i]
+	if ($kgm_prp != 0) && (($kgm_prp)->active_thread != 0)
+	    set $kgm_actp = (($kgm_prp)->active_thread)->top_act
 	    showtaskheader
 	    showtaskint ($kgm_actp)->task
 	    showactheader
 	    showactint $kgm_actp 1
 	    printf "\n"
 	end
-	set $kgm_prp = ($kgm_prp)->processor_list
-    end
-end
-
+	set $kgm_i = $kgm_i + 1
+    end
+end
 document showcurrentstacks
 | Routine to print out the thread running on each cpu (incl. its stack)
 | The following is the syntax:
@@ -462,7 +377,7 @@
 			showwaiterheader
 		end
 		set $kgm_w_shuttle = (struct thread *)$kgm_w_wqe
-		showactint $kgm_w_shuttle 0
+		showactint $kgm_w_shuttle->top_act 0
 	end	
 	set $kgm_w_wqe = (struct wait_queue_element *)$kgm_w_wqe->wqe_links.next
     end
@@ -607,8 +522,8 @@
 end
 
 define showvmeheader
-    printf "    entry       start       "
-    printf "        prot #page  object      offset\n"
+    printf "            entry       start       "
+    printf "prot #page  object      offset\n"
 end
 
 define showvmint
@@ -618,11 +533,7 @@
     printf "0x%08x  ", $kgm_map.pmap
     printf "0x%08x  ", $kgm_map.size
     printf "%3d  ", $kgm_map.hdr.nentries
-    if $kgm_map.pmap
-	printf "%5d  ", $kgm_map.pmap->stats.resident_count
-    else
-	printf "<n/a>  "
-    end
+    printf "%5d  ", $kgm_map.pmap->stats.resident_count
     printf "0x%08x  ", $kgm_map.hint
     printf "0x%08x\n", $kgm_map.first_free
     if $arg1 != 0
@@ -631,8 +542,8 @@
 	set $kgm_vmep = $kgm_map.hdr.links.next
 	while (($kgm_vmep != 0) && ($kgm_vmep != $kgm_head_vmep))
 	    set $kgm_vme = *$kgm_vmep
-	    printf "    0x%08x  ", $kgm_vmep
-	    printf "0x%016llx  ", $kgm_vme.links.start
+	    printf "            0x%08x  ", $kgm_vmep
+	    printf "0x%08x  ", $kgm_vme.links.start
 	    printf "%1x", $kgm_vme.protection
 	    printf "%1x", $kgm_vme.max_protection
 	    if $kgm_vme.inheritance == 0x0
@@ -658,7 +569,7 @@
 	    end
 	    printf "%5d  ",($kgm_vme.links.end - $kgm_vme.links.start) >> 12
 	    printf "0x%08x  ", $kgm_vme.object.vm_object
-	    printf "0x%016llx\n", $kgm_vme.offset
+	    printf "0x%08x\n", $kgm_vme.offset
   	    set $kgm_vmep = $kgm_vme.links.next
         end
     end
@@ -873,13 +784,13 @@
 
 define showallipc
     set $kgm_head_taskp = &default_pset.tasks
-    set $kgm_cur_taskp = (struct task *)($kgm_head_taskp->next)
-    while $kgm_cur_taskp != $kgm_head_taskp
+    set $kgm_taskp = (struct task *)($kgm_head_taskp->next)
+    while $kgm_taskp != $kgm_head_taskp
         showtaskheader
         showipcheader
-	showtaskint $kgm_cur_taskp
-	showipcint $kgm_cur_taskp->itk_space 0
-    	set $kgm_cur_taskp = (struct task *)($kgm_cur_taskp->pset_tasks.next)
+	showtaskint $kgm_taskp
+	showipcint $kgm_taskp->itk_space 0
+    	set $kgm_taskp = (struct task *)($kgm_taskp->pset_tasks.next)
     end
 end
 document showallipc
@@ -891,13 +802,13 @@
 
 define showallrights
     set $kgm_head_taskp = &default_pset.tasks
-    set $kgm_cur_taskp = (struct task *)($kgm_head_taskp->next)
-    while $kgm_cur_taskp != $kgm_head_taskp
+    set $kgm_taskp = (struct task *)($kgm_head_taskp->next)
+    while $kgm_taskp != $kgm_head_taskp
         showtaskheader
         showipcheader
-	showtaskint $kgm_cur_taskp
-	showipcint $kgm_cur_taskp->itk_space 1
-    	set $kgm_cur_taskp = (struct task *)($kgm_cur_taskp->pset_tasks.next)
+	showtaskint $kgm_taskp
+	showipcint $kgm_taskp->itk_space 1
+    	set $kgm_taskp = (struct task *)($kgm_taskp->pset_tasks.next)
     end
 end
 document showallrights
@@ -1221,20 +1132,20 @@
     if ($kgm_spacep != $kgm_destspacep)
 	set $kgm_destprocp = (struct proc *)0
         set $kgm_head_taskp = &default_pset.tasks
-        set $kgm_desttaskp = (struct task *)($kgm_head_taskp->next)
-        while (($kgm_destprocp == 0) && ($kgm_desttaskp != $kgm_head_taskp))
-	    set $kgm_destspacep = $kgm_desttaskp->itk_space
+        set $kgm_taskp = (struct task *)($kgm_head_taskp->next)
+        while (($kgm_destprocp == 0) && ($kgm_taskp != $kgm_head_taskp))
+	    set $kgm_destspacep = $kgm_taskp->itk_space
 	    if ($kgm_destspacep == $kgm_spacep)
-	       set $kgm_destprocp = (struct proc *)$kgm_desttaskp->bsd_info
+	       set $kgm_destprocp = (struct proc *)$kgm_taskp->bsd_info
 	    else
-    	       set $kgm_desttaskp = (struct task *)($kgm_desttaskp->pset_tasks.next)
+    	       set $kgm_taskp = (struct task *)($kgm_taskp->pset_tasks.next)
             end
         end
     end
     if $kgm_destprocp != 0
        printf "%s(%d)\n", $kgm_destprocp->p_comm, $kgm_destprocp->p_pid
     else
-       printf "task 0x%08x\n", $kgm_desttaskp
+       printf "task 0x%08x\n", $kgm_taskp
     end
 end
 
@@ -1405,109 +1316,27 @@
 |     (gdb) zprint
 end
 
-define showmtxgrp
-set $kgm_mtxgrp = (lck_grp_t *)$arg0
-
-if ($kgm_mtxgrp->lck_grp_mtxcnt)
-printf "0x%08x ", $kgm_mtxgrp
-printf "%8d ",$kgm_mtxgrp->lck_grp_mtxcnt
-printf "%12u ",$kgm_mtxgrp->lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_util_cnt
-printf "%8u ",$kgm_mtxgrp->lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_miss_cnt
-printf "%8u ",$kgm_mtxgrp->lck_grp_stat.lck_grp_mtx_stat.lck_grp_mtx_wait_cnt
-printf "%s ",&$kgm_mtxgrp->lck_grp_name
-printf "\n"
-end
-end
-
-
-define showallmtx
-printf "LCK GROUP       CNT         UTIL     MISS     WAIT NAME\n"
-set $kgm_mtxgrp_ptr = (lck_grp_t *)&lck_grp_queue
-set $kgm_mtxgrp_ptr = (lck_grp_t *)$kgm_mtxgrp_ptr->lck_grp_link.next
-while ($kgm_mtxgrp_ptr != (lck_grp_t *)&lck_grp_queue)
-	showmtxgrp $kgm_mtxgrp_ptr
-	set $kgm_mtxgrp_ptr = (lck_grp_t *)$kgm_mtxgrp_ptr->lck_grp_link.next
-end
-printf "\n"
-end
-document showallmtx
-| Routine to print a summary listing of all mutexes
-| The following is the syntax:
-|     (gdb) showallmtx
-end
-
-define showrwlckgrp
-set $kgm_rwlckgrp = (lck_grp_t *)$arg0
-
-if ($kgm_rwlckgrp->lck_grp_rwcnt)
-printf "0x%08x ", $kgm_rwlckgrp
-printf "%8d ",$kgm_rwlckgrp->lck_grp_rwcnt
-printf "%12u ",$kgm_rwlckgrp->lck_grp_stat.lck_grp_rw_stat.lck_grp_rw_util_cnt
-printf "%8u ",$kgm_rwlckgrp->lck_grp_stat.lck_grp_rw_stat.lck_grp_rw_miss_cnt
-printf "%8u ",$kgm_rwlckgrp->lck_grp_stat.lck_grp_rw_stat.lck_grp_rw_wait_cnt
-printf "%s ",&$kgm_rwlckgrp->lck_grp_name
-printf "\n"
-end
-end
-
-
-define showallrwlck
-printf "LCK GROUP       CNT         UTIL     MISS     WAIT NAME\n"
-set $kgm_rwlckgrp_ptr = (lck_grp_t *)&lck_grp_queue
-set $kgm_rwlckgrp_ptr = (lck_grp_t *)$kgm_rwlckgrp_ptr->lck_grp_link.next
-while ($kgm_rwlckgrp_ptr != (lck_grp_t *)&lck_grp_queue)
-	showrwlckgrp $kgm_rwlckgrp_ptr
-	set $kgm_rwlckgrp_ptr = (lck_grp_t *)$kgm_rwlckgrp_ptr->lck_grp_link.next
-end
-printf "\n"
-end
-document showallrwlck
-| Routine to print a summary listing of all read/writer locks
-| The following is the syntax:
-|     (gdb) showallrwlck
-end
-
 set $kdp_act_counter = 0
 
 define switchtoact
-	set $newact = (struct thread *) $arg0
-	if ($newact->kernel_stack == 0)
-		echo This activation does not have a stack.\n
-		echo continuation:
-		output/a (unsigned) $newact.continuation
-		echo \n
-	else
-	if ($kgm_mtype == 18)
+	if (machine_slot[0].cpu_type == 18)
 		if ($kdp_act_counter == 0)
-			set $kdpstate = (struct savearea *) kdp.saved_state
+		set $kdpstate = (struct savearea *) kdp.saved_state
 		end
 		set $kdp_act_counter = $kdp_act_counter + 1
 		set $newact = (struct thread *) $arg0
-		set (struct savearea *) kdp.saved_state=$newact->machine->pcb
-		flushregs
-		flushstack
-		set $pc=$newact->machine->pcb.save_srr0
+		if (($newact.thread)->kernel_stack == 0)
+		echo This activation does not have a stack.\n
+		echo continuation:
+		output/a $newact.thread.continuation
+		echo \n
+		end
+		set (struct savearea *) kdp.saved_state=$newact->mact->pcb
+		flush
+		set $pc=$newact->mact->pcb.save_srr0
 		update
 	else
-		set $kdpstatep = (struct x86_saved_state32 *) kdp.saved_state
-		if ($kdp_act_counter == 0)
-			set $kdpstate = *($kdpstatep)
-		end	
-		set $kdp_act_counter = $kdp_act_counter + 1
-
-		set $kgm_statep = (struct x86_kernel_state32 *) \
-					($newact->kernel_stack + 0x4000 \
-					 - sizeof(struct x86_kernel_state32))
-		set $kdpstatep->ebx = $kgm_statep->k_ebx 
-		set $kdpstatep->ebp = $kgm_statep->k_ebp 
-		set $kdpstatep->edi = $kgm_statep->k_edi 
-		set $kdpstatep->esi = $kgm_statep->k_esi 
-		set $kdpstatep->eip = $kgm_statep->k_eip 
-		flushregs
-		flushstack
-		set $pc = $kgm_statep->k_eip
-		update
-	end
+		echo switchtoact not implemented for this architecture.\n
 	end
 end
 
@@ -1521,14 +1350,13 @@
 end     
 
 define switchtoctx
-	if ($kgm_mtype == 18)
+	if (machine_slot[0].cpu_type == 18)
 		if ($kdp_act_counter == 0)
 		set $kdpstate = (struct savearea *) kdp.saved_state
 		end
 		set $kdp_act_counter = $kdp_act_counter + 1
 		set (struct savearea *) kdp.saved_state=(struct savearea *) $arg0
-		flushregs
-		flushstack
+		flush
 		set $pc=((struct savearea *) $arg0)->save_srr0
 		update
 	else
@@ -1545,21 +1373,14 @@
 end     
 
 define resetctx
-	if ($kgm_mtype == 18)
+	if (machine_slot[0].cpu_type == 18)
 		set (struct savearea *)kdp.saved_state=$kdpstate
-		flushregs
-		flushstack
+		flush
 		set $pc=((struct savearea *) kdp.saved_state)->save_srr0
 		update
 		set $kdp_act_counter = 0
 	else
-		set $kdpstatep = (struct x86_saved_state32 *) kdp.saved_state
-		set *($kdpstatep)=$kdpstate
-		flushregs
-		flushstack
-		set $pc=$kdpstatep->eip
-		update
-		set $kdp_act_counter = 0
+		echo resetctx not implemented for this architecture.\n
 	end
 end     
         
@@ -1646,900 +1467,3 @@
 document showallacts
 | See help showallthreads.
 end
-
-
-define resetstacks
-       _kgm_flush_loop
-       set kdp_pmap = 0
-       _kgm_flush_loop
-       resetctx
-       _kgm_flush_loop
-       _kgm_update_loop
-       resetctx
-       _kgm_update_loop
-end
-
-document resetstacks
-| Syntax: resetstacks
-| Internal kgmacro routine used by the "showuserstack" macro 
-| to reset the target pmap to the kernel pmap.
-end
-
-#Barely effective hacks to work around bugs in the "flush" and "update" 
-#gdb commands in Tiger (up to 219); these aren't necessary with Panther
-#gdb, but do no harm.
-define _kgm_flush_loop
-       set $kgm_flush_loop_ctr = 0
-       while ($kgm_flush_loop_ctr < 30)
-       	     flushregs
-	     flushstack
-	     set $kgm_flush_loop_ctr = $kgm_flush_loop_ctr + 1
-       end
-end
-
-define _kgm_update_loop
-       set $kgm_update_loop_ctr = 0
-       while ($kgm_update_loop_ctr < 30)
-       	     update
-       	     set $kgm_update_loop_ctr = $kgm_update_loop_ctr + 1
-       end
-end
-
-#This is necessary since gdb often doesn't do backtraces on x86 correctly
-#in the absence of symbols.The code below in showuserstack and 
-#showx86backtrace also contains several workarouds for the gdb bug where 
-#gdb stops macro evaluation because of spurious "Cannot read memory"
-#errors on x86. These errors appear on ppc as well, but they don't
-#always stop macro evaluation.
-
-set $kgm_cur_ebp = 0
-set $kgm_cur_eip = 0
-
-define showx86backtrace
-	if ($kgm_cur_ebp == 0)
-		set $kgm_cur_ebp = $ebp
-	end
-	if ($kgm_cur_eip == 0)
-		set $kgm_cur_eip = $eip
-	end
-	printf "0: EBP: 0x%08x EIP: 0x%08x\n", $kgm_cur_ebp, $kgm_cur_eip
-	x/i $kgm_cur_eip
-	set $kgm_prev_ebp = *((uint32_t *) $kgm_cur_ebp)
-	set $kgm_prev_eip = *((uint32_t *) ($kgm_cur_ebp + 4))
-	set $kgm_frameno = 1
-	while $kgm_prev_ebp != 0
-		printf "%d: saved EBP: 0x%08x saved EIP: 0x%08x\n", $kgm_frameno, $kgm_prev_ebp, $kgm_prev_eip
-		x/i $kgm_prev_eip
-		set $kgm_cur_ebp = $kgm_prev_ebp
-		set $kgm_prev_ebp = *((uint32_t *) $kgm_cur_ebp)
-		set $kgm_prev_eip = *((uint32_t *) ($kgm_cur_ebp + 4))
-		set $kgm_frameno = $kgm_frameno + 1
-	end
-	set $kgm_cur_ebp = 0
-	set $kgm_cur_eip = 0
-	set kdp_pmap = 0
-end
-
-define showuserstack
-  		if ($kgm_mtype == 18)	
-		   if ($kdp_act_counter == 0)
-		      set $kdpstate = (struct savearea *) kdp.saved_state
-		   end
-		   set $kdp_act_counter = $kdp_act_counter + 1
-		   set $newact = (struct thread *) $arg0
-		   _kgm_flush_loop
-		   set $checkpc = $newact->machine->upcb.save_srr0
-		   if ($checkpc == 0)
-		      echo This activation does not appear to have
-		      echo \20 a valid user context.\n
-		   else	      
-		     set (struct savearea *) kdp.saved_state=$newact->machine->upcb
-		     set $pc = $checkpc
-#flush and update seem to be executed lazily by gdb on Tiger, hence the
-#repeated invocations - see 3743135
-	   	    _kgm_flush_loop
-# This works because the new pmap is used only for reads
-		     set kdp_pmap = $newact->task->map->pmap
-		     _kgm_flush_loop
-		     _kgm_update_loop
-		     bt
-		     resetstacks
-		     _kgm_flush_loop
-		     _kgm_update_loop
-		     resetstacks
-		     _kgm_flush_loop
-		     _kgm_update_loop
-		   end
-		else
-			set $newact = (struct thread *) $arg0
-			set $newiss = (x86_saved_state32_t *) ($newact->machine.pcb->iss)
-			set $checkpc = $newiss.eip
-			if ($checkpc == 0)
-			    echo This activation does not appear to have
-			    echo \20 a valid user context.\n
-			else
-			set $kgm_cur_ebp = $newiss.ebp
-			set $kgm_cur_eip = $checkpc
-			printf "You may now issue the showx86backtrace command to see the user space backtrace for this thread (0x%08x); you can also examine memory locations in this address space (pmap 0x%08x) before issuing the backtrace. This two-step process is necessary to work around various bugs in x86 gdb, which cause it to stop memory evaluation on spurious memory read errors. Additionally, you may need to issue a set kdp_pmap = 0 command after the showx86backtrace completes, to resume reading from the kernel address space.\n", $arg0, $newact->task->map->pmap
-			set kdp_pmap = $newact->task->map->pmap
-			_kgm_flush_loop
-			_kgm_update_loop
-			end			
-		end
-end
-document showuserstack
-Syntax: showuserstack <address of thread activation>
-|This command displays a numeric backtrace for the user space stack of
-|the given thread activation. It may, of course, fail to display a
-|complete backtrace if portions of the user stack are not mapped in.
-|Symbolic backtraces can be obtained either by running gdb on the
-|user space binary, or a tool such as "symbolicate".
-|Note that while this command works on Panther's gdb, an issue
-|with Tiger gdb (3743135) appears to hamper the evaluation of this
-|macro in some cas