9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit f92f867e1cbabadebc174d2b6b0046501b4371df
parent 645c3b5c8672a102a1e58ad1fe6c285351d4ff7c
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Mon, 18 Feb 2019 15:13:00 +0000

Remove reloc()

Change-Id: Ib5410558ae3a7e1dc6a5b815ff238c00ad5bdaf9
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>

Diffstat:
Minclude/rcode/ramfw.h | 2+-
Minclude/rcode/rcode.h | 1-
Minclude/rcode/romfw.h | 1-
Msrc/libk/kerror.c | 4+---
Msrc/ramfw/rt.c | 14--------------
Msrc/romfw/dlang.c | 12++++++------
Msrc/romfw/regstr.c | 2+-
Msrc/romfw/rmc.c | 18++----------------
Mtarget/hosted/ram.c | 9---------
Mtarget/hosted/rom.c | 2--
10 files changed, 11 insertions(+), 54 deletions(-)

diff --git a/include/rcode/ramfw.h b/include/rcode/ramfw.h @@ -1 +1 @@ -extern void *text; + diff --git a/include/rcode/rcode.h b/include/rcode/rcode.h @@ -93,7 +93,6 @@ extern noreturn void badcmd(int error); extern void rmc(Rmucmd *cmd); extern int debug(void); extern void idev(void); -extern void *reloc(const void *); extern char *regstr(enum regidx r); /* driver functions */ diff --git a/include/rcode/romfw.h b/include/rcode/romfw.h @@ -10,7 +10,6 @@ extern unsigned char in_panic; extern unsigned char in_debug; extern unsigned char in_dumpstack; extern unsigned char in_backtrace; -extern void *text; extern void *environ; extern size_t bsssize; diff --git a/src/libk/kerror.c b/src/libk/kerror.c @@ -3,12 +3,10 @@ #include <libk.h> -extern void *reloc(const void *); - void kerror(const char *s) { - char *msg = reloc(strerror(errno)); + char *msg = strerror(errno); kprint("%s:%s\n", s, msg); } diff --git a/src/ramfw/rt.c b/src/ramfw/rt.c @@ -28,17 +28,3 @@ trap(struct trapframe *fp) { panic("trap"); } - -/* - * Reloc() is used to relocate address - * because we are linked at address 0 but we can be - * loaded at any address - */ -void * -reloc(const void *addr) -{ - uintptr_t a = (uintptr_t) addr; - uintptr_t off = (uintptr_t) text; - - return (void *) (a + off); -} diff --git a/src/romfw/dlang.c b/src/romfw/dlang.c @@ -99,7 +99,7 @@ get_rmudesc(char *name) const struct rmudesc *desc; for (desc = rmudescs; desc->name; desc++) - if (strcmp(reloc(desc->name), name) == 0) + if (strcmp(desc->name, name) == 0) return desc; return NULL; } @@ -111,7 +111,7 @@ get_cmd(char *name) const struct cmd *cmd; for (cmd = cmds; cmd->name; cmd++) { - if (strcmp(reloc(cmd->name), name) == 0) + if (strcmp(cmd->name, name) == 0) return cmd; } return NULL; @@ -182,7 +182,7 @@ do_rmu(const struct cmd *cmd, struct args *args) if (args->argv[1][0] == '?') { for (desc = rmudescs; desc->name; desc++) { - char *s = reloc(desc->name); + char *s = desc->name; kprint("%s\n", s); } return 0; @@ -212,7 +212,7 @@ static int do_help(const struct cmd *cmd, struct args *args) { for (cmd = cmds; cmd->name; cmd++) { - char *s = reloc(cmd->helpmsg); + char *s = cmd->helpmsg; kprint(PREFIX "%s\n", s); } return 0; @@ -328,8 +328,8 @@ run(struct args *args) void *bp; if (args->argc < cmd->min || args->argc > cmd->max) - error(reloc(cmd->helpmsg)); - bp = reloc(cmd->eval); + error(cmd->helpmsg); + bp = cmd->eval; fn = (int (*)(const struct cmd *, struct args *)) bp; return (*fn)(cmd, args); } diff --git a/src/romfw/regstr.c b/src/romfw/regstr.c @@ -43,5 +43,5 @@ static const char *const regtbl[] = { char * regstr(enum regidx r) { - return reloc(regtbl[r]); + return regtbl[r]; } diff --git a/src/romfw/rmc.c b/src/romfw/rmc.c @@ -107,7 +107,7 @@ trap(struct trapframe *fp) ec = (fp->r[ESR] >> 26) & 0x3f; if (ec != RMC) { - msg = (ec < NR_EC_VALS) ? reloc(ecstr[ec]) : "unknown reason"; + msg = (ec < NR_EC_VALS) ? ecstr[ec] : "unknown reason"; panicfmt(msg, fp); halt(); } @@ -172,23 +172,9 @@ rmc(Rmucmd *cmd) if (off > 255) panic("rmc2"); - bp = reloc(tab->handler[off]); + bp = tab->handler[off]; fn = (void (*) (Rmucmd *)) bp; (*fn)(cmd); cmd->fp->r[X0] = SUCCESS; } - -/* - * Reloc() is used to relocate address - * because we are linked at address 0 but we can be - * loaded at any address - */ -void * -reloc(const void *addr) -{ - uintptr_t a = (uintptr_t) addr; - uintptr_t off = (uintptr_t) text; - - return (void *) (a + off); -} diff --git a/target/hosted/ram.c b/target/hosted/ram.c @@ -3,17 +3,8 @@ #include <rcode/rcode.h> #include <rcode/ramfw.h> -void *text; - -static void -imach(void) -{ - text = 0; -} - int main(int argc, char *argv[]) { - imach(); return 0; } diff --git a/target/hosted/rom.c b/target/hosted/rom.c @@ -11,7 +11,6 @@ unsigned char in_panic; unsigned char in_debug; unsigned char in_dumpstack; unsigned char in_backtrace; -void *text; void *environ; const char *errstr; @@ -44,7 +43,6 @@ imach(void) exit(EXIT_FAILURE); rmctab = &romtab; framep = &trapframe; - text = 0; } int