# .gdbinit file
# $Id: dot.gdbinit.oaks32r,v 1.4 2004/10/20 02:24:37 takata Exp $
#-----
# NOTE: this file is generated by a script, "gen_gdbinit.pl".
# (Please type "gen_gdbinit.pl --help" and check the help message).
# $ Id: gen_gdbinit.pl,v 1.12 2004/07/26 09:56:10 takata Exp $
#-----
# target platform: oaks32r

# setting
set width 0d70
set radix 0d16

# clk xin:cpu:bus=16:66:33
define clock_init
  set *(unsigned long *)0x00ef4008 = 1
  shell sleep 0.1
  set *(unsigned long *)0x00ef4000 = 0x00020100
end

# Initialize programmable ports
define port_init
  set *(unsigned long *)0x00ef1000 = 0x1
  set *(unsigned long *)0x00ef1060 = 0x01400001
  set *(unsigned long *)0x00ef1064 = 0x00015555
  set *(unsigned long *)0x00ef1068 = 0x55555050
  set *(unsigned long *)0x00ef106c = 0x05150040
end

# Initialize SDRAM controller
define sdram_init
  set *(unsigned long *)0x00ef6008 = 0x00000182
  set *(unsigned long *)0x00ef600c = 0x00000001
  shell sleep 0.1
  set *(unsigned long *)0x00ef602c = 0x00000010
  set *(unsigned long *)0x00ef6028 = 0x00000300
  set *(unsigned long *)0x00ef6048 = 0x00000001
  set *(unsigned long *)0x00ef6020 = 0x01000041
  set *(unsigned long *)0x00ef6004 = 0x00010117
  set *(unsigned long *)0x00ef6010 = 0x00000001
  set *(unsigned long *)0x00ef6024 = 0x00000001
end
document sdram_init
  SDRAM controller initialization
  0x01000000 - 0x017fffff (8MB)
end

# Initialize LAN controller
define lanc_init
  set *(unsigned long *)0x00ef5008 = 0x03031303
  #RST DRV (P64)
  set *(unsigned char *)0x00ef1046 = 0x08
  set *(unsigned char *)0x00ef1026 = 0xff
  set *(unsigned char *)0x00ef1026 = 0x00
  set *(unsigned short *)0x02000630 = 0xffff
end

# Show current task structure
define show_current
  set $current = $spi & 0xffffe000
  printf "$current=0x%08lX\n",$current
  print *(struct task_struct *)$current
end

# Show user assigned task structure
define show_task
  set  = $arg0 & 0xffffe000
  printf "$task=0x%08lX\n",$task
  print *(struct task_struct *)$task
end
document show_task
  Show user assigned task structure
  arg0 : task structure address
end

# Show M32R registers
define show_regs
  printf " R0[0x%08lX]   R1[0x%08lX]   R2[0x%08lX]   R3[0x%08lX]\n",$r0,$r1,$r2,$r3
  printf " R4[0x%08lX]   R5[0x%08lX]   R6[0x%08lX]   R7[0x%08lX]\n",$r4,$r5,$r6,$r7
  printf " R8[0x%08lX]   R9[0x%08lX]  R10[0x%08lX]  R11[0x%08lX]\n",$r8,$r9,$r10,$r11
  printf "R12[0x%08lX]   FP[0x%08lX]   LR[0x%08lX]   SP[0x%08lX]\n",$r12,$fp,$lr,$sp
  printf "PSW[0x%08lX]  CBR[0x%08lX]  SPI[0x%08lX]  SPU[0x%08lX]\n",$psw,$cbr,$spi,$spu
  printf "BPC[0x%08lX]   PC[0x%08lX] ACCL[0x%08lX] ACCH[0x%08lX]\n",$bpc,$pc,$accl,$acch
end

# Setup all
define setup
  use_mon_code
  set *(unsigned int)0xfffffffc=0x60
  shell sleep 0.1
  clock_init
  shell sleep 0.1
  port_init
  sdram_init
  lanc_init
end

# Load modules
define load_modules
  use_debug_dma
  load
end

# Set kernel parameters
define set_kernel_parameters
  set $param = (void*)0x01001000
  # INITRD_START
#  set *(unsigned long *)($param + 0x0010) = 0x00000000
  # INITRD_SIZE
#  set *(unsigned long *)($param + 0x0014) = 0x00000000
  # M32R_CPUCLK
  set *(unsigned long *)($param + 0x0018) = 0d66666667
  # M32R_BUSCLK
  set *(unsigned long *)($param + 0x001c) = 0d33333333

  # M32R_TIMER_DIVIDE
  set *(unsigned long *)($param + 0x0020) = 0d128

  set {char[0x200]}($param + 0x100) = "console=ttyS0,115200n8x root=/dev/nfsroot nfsroot=192.168.0.1:/project/m32r-linux/export/rootfs nfsaddrs=192.168.0.101:192.168.0.1:192.168.0.1:255.255.255.0:mappi001 \0"
end

# Boot
define boot
  set_kernel_parameters
  set $fp = 0
  set $pc = 0x01002000
  si
  c
end

# Set breakpoints
define set_breakpoints
  b *0x00000020
  b *0x00000030
end

# Restart
define restart
  sdireset
  sdireset
  setup
  load_modules
  boot
end

sdireset
sdireset
file vmlinux
target m32rsdi
setup
#load_modules
#set_breakpoints
#boot

