Question: I can add/commit any file/folder to repo but index.php . When I add/commit index.php to any folder under my repo it gives error as below:

```
Command  Commit
Adding   D:\svn\projects\myrepo\index.php
Error    Commit failed (details follow):
Error    Repository moved permanently to
Error    'http://mydomain.com/repos/myrepo/!svn/wrk/RANDOM-HASH/';
Error    please relocate
Error    Repository moved permanently to 'http://mydomain.com/repos/myrepo/'; please relocate
Finished!

```

Repo: under : /var/www/svn/myrepo
url : <http://mydomain.com/repos/myrepo>
svm mod\_dav\_svn on Red hat linux with plesk
committing/adding through windows tortoisesvn

I could not find any clue why is it. I have same configrations on my local centos test server for svn and i can commit anything there including index.php.

What can be possible reason?

Answer: 
There are 3 reasons I can think of that a particular value could be used for the powerup IP:

1. convention - other processors in the same family/brand use the same location, and they want to give their customers a sense of familiarity
2. compatibility
3. certain areas are restricted or enhanced for certain purposes. The [6502](http://en.wikipedia.org/wiki/6502) for example has special faster instructions for accessing the first 256 bytes of memory from 0x00 to 0xff. On that CPU it makes sense to have the CPU start somewhere else. (I don't think the 8086 treats any area of memory specially however.)

compatibility and convention issues aside, the value that the instruction pointer gets when the processor powers up is largely arbitrary. For most models, the IP is intially either very close to the top of its address space (with enough room for a far JMP call to get it to where the real init code is) or at the very bottom (ie 0).

The [wikipedia](http://en.wikipedia.org/wiki/8085) [articles](http://en.wikipedia.org/wiki/Intel_8086) state that the 8086 was designed so that assembly source code from previous processors was easily *converted* to work with the 8086, but that's all. Apart from that there was no attempt to make it compatible with previous models.
I think the answer lies in the Interrupt Vector Table (IVT). The IVT was introduced in the 8086 processor. The 8085 (which's design is based on the 8080 processor) uses a different method for handling interrupts. On the 8086/8088 the IVT takes up the first 1024 bytes of memory (256 interrupt vectors consisting of 4 bytes each). For this reason there cannot be any executable code in that region. Starting with the 80286, x86/x64 processors have an Interrupt Descriptor Table register (IDTR) which can be changed so that software can relocate the interrupt vector table anywhere in the processor's address space where it's convenient. 

So technically:
 - The 8085 does not have a CS register and its address space is limited to 64KiB
 - Execution on the 8085 starts at address 0x0000 after power-on
 - Execution on the x86 and x64 family of processors starts at the last 16 bytes of addressable memory. So on 16-bit processors with 20 address lines this would be linear address 0xFFFF0. On 32-bit processors it's address 0xFFFFFFF0, and on 64-bit processors it's 0xFFFFFFFFFFFFFFF0. The system ROM must be wired to the memory bus in such a way that it will respond to these addresses.

Check out the [Intel processor manuals](http://www.intel.com/p/en_US/support/processors "Intel processor manuals") for the official explanation.