
On Monday 21 April 2008, Wolfgang Denk wrote:
In message 200804210541.41085.vapier@gentoo.org you wrote:
This makes no sense. If it is ``exactly like "go"'' it doesn't matter if the code returns or not (and actually this is what I'm trying to point out all the time).
the obvious implication is that i would add the cache disabling hooks to the jump command instead of the go command since you wont allow the hook around go.
So it would NOT be ``exactly like "go"''.
well, duh. my point was that you're making "go" get duplicated just to conform to documentation. the command name itself "go" doesnt really conjurn up usage of "executing an application and returning" ... fits better with "go to this location and never come back". "run" probably would have been a better name. but that's hindsight for you.
Providing both a "go" and a "jump" command which differ just in cahce handling seems broken to me. If you want to add such a feature, then I recommend to do it as part of "go", but make it optional, i. e. in- troduce a new optional argument to the "go" command, something like
go [ -cache={off,d-off,i-off,on,d-on,i-on} ] addr [ args ... ]
cache is just an example. other arches may want to do other sort of "system breakdown/cleanup" before relinquishing control. option flags to commands really doesnt fit the style of u-boot (i expect that sort of painful option parsing in redboot, not really u-boot).
so we can do: go [-noret] addr [args...] or we can add "jump" to cmd_boot.c and merge the differences by just using a function pointer to "do_go_exec" or "do_jump_exec".
It's just that "go" shall retain the standard U-Boot environment for application it runs, and that the applications need to take care if they need to meddle with interrupts, exception handlers, etc.
U-Boot sets up no interrupts and the only exceptions that occur on the Blackfin are for cache handling. disabling the caches forces a sane
There is more procvessors in this world than just Blackfin, and others *do* enable interrupts, etc. It is important to me that implementations behave the same no matter which architecture you are using.
i never said Blackfin was the only thing that mattered. in fact, my goal is to make it so that people using this facility get a more standard initial environment before they start taking over the system. i guess i wont point out the U-Boot policy about not using interrupts ... -mike