Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 148587
b: refs/heads/master
c: 11aca0e
h: refs/heads/master
i:
  148585: 94d5295
  148583: 88ef39c
v: v3
  • Loading branch information
Mike Frysinger committed Jun 12, 2009
1 parent a5e775e commit 4e9fdfa
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a43b739f257fd2569e11c6c93fbb86df382848e9
refs/heads/master: 11aca0e7352b6a28193221cd2dd85f758fb71b23
55 changes: 30 additions & 25 deletions trunk/arch/blackfin/kernel/kgdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ static int validate_memory_access_address(unsigned long addr, int size)
int cpu = raw_smp_processor_id();

if (size < 0)
return EFAULT;
return -EFAULT;
if (addr >= 0x1000 && (addr + size) <= physical_mem_end)
return 0;
if (addr >= SYSMMR_BASE)
Expand Down Expand Up @@ -498,7 +498,7 @@ static int validate_memory_access_address(unsigned long addr, int size)
if (IN_MEM(addr, size, L2_START, L2_LENGTH))
return 0;

return EFAULT;
return -EFAULT;
}

/*
Expand All @@ -508,14 +508,15 @@ static int validate_memory_access_address(unsigned long addr, int size)
int kgdb_mem2hex(char *mem, char *buf, int count)
{
char *tmp;
int err = 0;
int err;
unsigned char *pch;
unsigned short mmr16;
unsigned long mmr32;
int cpu = raw_smp_processor_id();

if (validate_memory_access_address((unsigned long)mem, count))
return EFAULT;
err = validate_memory_access_address((unsigned long)mem, count);
if (err)
return err;

/*
* We use the upper half of buf as an intermediate buffer for the
Expand All @@ -533,7 +534,7 @@ int kgdb_mem2hex(char *mem, char *buf, int count)
*tmp++ = *pch++;
tmp -= 2;
} else
err = EFAULT;
err = -EFAULT;
break;
case 4:
if ((unsigned int)mem % 4 == 0) {
Expand All @@ -545,10 +546,10 @@ int kgdb_mem2hex(char *mem, char *buf, int count)
*tmp++ = *pch++;
tmp -= 4;
} else
err = EFAULT;
err = -EFAULT;
break;
default:
err = EFAULT;
err = -EFAULT;
}
} else if ((cpu == 0 && IN_MEM(mem, count, L1_CODE_START, L1_CODE_LENGTH))
#ifdef CONFIG_SMP
Expand All @@ -557,7 +558,7 @@ int kgdb_mem2hex(char *mem, char *buf, int count)
) {
/* access L1 instruction SRAM*/
if (dma_memcpy(tmp, mem, count) == NULL)
err = EFAULT;
err = -EFAULT;
} else
err = probe_kernel_read(tmp, mem, count);

Expand Down Expand Up @@ -585,7 +586,7 @@ int kgdb_ebin2mem(char *buf, char *mem, int count)
char *tmp_new;
unsigned short *mmr16;
unsigned long *mmr32;
int err = 0;
int err;
int size = 0;
int cpu = raw_smp_processor_id();

Expand All @@ -601,8 +602,9 @@ int kgdb_ebin2mem(char *buf, char *mem, int count)
size++;
}

if (validate_memory_access_address((unsigned long)mem, size))
return EFAULT;
err = validate_memory_access_address((unsigned long)mem, size);
if (err)
return err;

if ((unsigned int)mem >= SYSMMR_BASE) { /*access MMR registers*/
switch (size) {
Expand All @@ -611,17 +613,17 @@ int kgdb_ebin2mem(char *buf, char *mem, int count)
mmr16 = (unsigned short *)buf;
*(unsigned short *)mem = *mmr16;
} else
return EFAULT;
err = -EFAULT;
break;
case 4:
if ((unsigned int)mem % 4 == 0) {
mmr32 = (unsigned long *)buf;
*(unsigned long *)mem = *mmr32;
} else
return EFAULT;
err = -EFAULT;
break;
default:
return EFAULT;
err = -EFAULT;
}
} else if ((cpu == 0 && IN_MEM(mem, count, L1_CODE_START, L1_CODE_LENGTH))
#ifdef CONFIG_SMP
Expand All @@ -630,7 +632,7 @@ int kgdb_ebin2mem(char *buf, char *mem, int count)
) {
/* access L1 instruction SRAM */
if (dma_memcpy(mem, buf, size) == NULL)
err = EFAULT;
err = -EFAULT;
} else
err = probe_kernel_write(mem, buf, size);

Expand All @@ -648,10 +650,12 @@ int kgdb_hex2mem(char *buf, char *mem, int count)
char *tmp_hex;
unsigned short *mmr16;
unsigned long *mmr32;
int err;
int cpu = raw_smp_processor_id();

if (validate_memory_access_address((unsigned long)mem, count))
return EFAULT;
err = validate_memory_access_address((unsigned long)mem, count);
if (err)
return err;

/*
* We use the upper half of buf as an intermediate buffer for the
Expand All @@ -673,17 +677,17 @@ int kgdb_hex2mem(char *buf, char *mem, int count)
mmr16 = (unsigned short *)tmp_raw;
*(unsigned short *)mem = *mmr16;
} else
return EFAULT;
err = -EFAULT;
break;
case 4:
if ((unsigned int)mem % 4 == 0) {
mmr32 = (unsigned long *)tmp_raw;
*(unsigned long *)mem = *mmr32;
} else
return EFAULT;
err = -EFAULT;
break;
default:
return EFAULT;
err = -EFAULT;
}
} else if ((cpu == 0 && IN_MEM(mem, count, L1_CODE_START, L1_CODE_LENGTH))
#ifdef CONFIG_SMP
Expand All @@ -692,10 +696,11 @@ int kgdb_hex2mem(char *buf, char *mem, int count)
) {
/* access L1 instruction SRAM */
if (dma_memcpy(mem, tmp_raw, count) == NULL)
return EFAULT;
err = -EFAULT;
} else
return probe_kernel_write(mem, tmp_raw, count);
return 0;
err = probe_kernel_write(mem, tmp_raw, count);

return err;
}

int kgdb_validate_break_address(unsigned long addr)
Expand All @@ -715,7 +720,7 @@ int kgdb_validate_break_address(unsigned long addr)
if (IN_MEM(addr, BREAK_INSTR_SIZE, L2_START, L2_LENGTH))
return 0;

return EFAULT;
return -EFAULT;
}

int kgdb_arch_set_breakpoint(unsigned long addr, char *saved_instr)
Expand Down

0 comments on commit 4e9fdfa

Please sign in to comment.