Changeset d5a89a3 in mainline for uspace/lib/c/arch/amd64


Ignore:
Timestamp:
2019-02-11T22:31:04Z (6 years ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Children:
aaf9789c
Parents:
e3272101 (diff), 4805495 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

merging with upstream/master

Location:
uspace/lib/c/arch/amd64
Files:
1 added
14 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/arch/amd64/Makefile.common

    re3272101 rd5a89a3  
    2828
    2929# TODO: We need to implement DWARF unwinding and get rid of this flag.
    30 COMMON_CFLAGS += -fno-omit-frame-pointer
     30COMMON_CFLAGS += -fno-omit-frame-pointer -Wl,-z,max-page-size=0x1000
    3131
    3232# XXX: This architecture requires unoptimized TLS pointer access,
  • uspace/lib/c/arch/amd64/include/libarch/config.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_CONFIG_H_
    36 #define LIBC_amd64_CONFIG_H_
     35#ifndef _LIBC_amd64_CONFIG_H_
     36#define _LIBC_amd64_CONFIG_H_
    3737
    3838#define PAGE_WIDTH      12
  • uspace/lib/c/arch/amd64/include/libarch/elf_linux.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_ELF_LINUX_H_
    36 #define LIBC_amd64_ELF_LINUX_H_
     35#ifndef _LIBC_amd64_ELF_LINUX_H_
     36#define _LIBC_amd64_ELF_LINUX_H_
    3737
    3838#include <libarch/istate.h>
  • uspace/lib/c/arch/amd64/include/libarch/faddr.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_FADDR_H_
    36 #define LIBC_amd64_FADDR_H_
     35#ifndef _LIBC_amd64_FADDR_H_
     36#define _LIBC_amd64_FADDR_H_
    3737
    3838#include <types/common.h>
  • uspace/lib/c/arch/amd64/include/libarch/fibril.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_FIBRIL_H_
    36 #define LIBC_amd64_FIBRIL_H_
     35#ifndef _LIBC_amd64_FIBRIL_H_
     36#define _LIBC_amd64_FIBRIL_H_
    3737
    3838#include <libarch/fibril_context.h>
  • uspace/lib/c/arch/amd64/include/libarch/fibril_context.h

    re3272101 rd5a89a3  
    2727 */
    2828
    29 #ifndef LIBC_ARCH_FIBRIL_CONTEXT_H_
    30 #define LIBC_ARCH_FIBRIL_CONTEXT_H_
     29#ifndef _LIBC_ARCH_FIBRIL_CONTEXT_H_
     30#define _LIBC_ARCH_FIBRIL_CONTEXT_H_
    3131
    32 #define CONTEXT_OFFSET_SP   0x00
    33 #define CONTEXT_OFFSET_PC   0x08
    34 #define CONTEXT_OFFSET_RBX  0x10
    35 #define CONTEXT_OFFSET_RBP  0x18
    36 #define CONTEXT_OFFSET_R12  0x20
    37 #define CONTEXT_OFFSET_R13  0x28
    38 #define CONTEXT_OFFSET_R14  0x30
    39 #define CONTEXT_OFFSET_R15  0x38
    40 #define CONTEXT_OFFSET_TLS  0x40
    41 #define CONTEXT_SIZE        0x48
     32#define __CONTEXT_OFFSET_SP   0x00
     33#define __CONTEXT_OFFSET_PC   0x08
     34#define __CONTEXT_OFFSET_RBX  0x10
     35#define __CONTEXT_OFFSET_RBP  0x18
     36#define __CONTEXT_OFFSET_R12  0x20
     37#define __CONTEXT_OFFSET_R13  0x28
     38#define __CONTEXT_OFFSET_R14  0x30
     39#define __CONTEXT_OFFSET_R15  0x38
     40#define __CONTEXT_OFFSET_TLS  0x40
     41#define __CONTEXT_SIZE        0x48
    4242
    4343#ifndef __ASSEMBLER__
     
    4545#include <stdint.h>
    4646
    47 typedef struct context {
     47typedef struct __context {
    4848        /*
    4949         * We include only registers that must be preserved
     
    5959        uint64_t r15;
    6060        uint64_t tls;
    61 } context_t;
     61} __context_t;
    6262
    6363#endif
  • uspace/lib/c/arch/amd64/include/libarch/rtld/dynamic.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_RTLD_DYNAMIC_H_
    36 #define LIBC_amd64_RTLD_DYNAMIC_H_
     35#ifndef _LIBC_amd64_RTLD_DYNAMIC_H_
     36#define _LIBC_amd64_RTLD_DYNAMIC_H_
    3737
    3838typedef struct {
  • uspace/lib/c/arch/amd64/include/libarch/rtld/elf_dyn.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_RTLD_ELF_DYN_H_
    36 #define LIBC_amd64_RTLD_ELF_DYN_H_
     35#ifndef _LIBC_amd64_RTLD_ELF_DYN_H_
     36#define _LIBC_amd64_RTLD_ELF_DYN_H_
    3737
    3838#define R_X86_64_64             1
  • uspace/lib/c/arch/amd64/include/libarch/stackarg.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_STACKARG_H_
    36 #define LIBC_STACKARG_H_
     35#ifndef _LIBC_STACKARG_H_
     36#define _LIBC_STACKARG_H_
    3737
    3838#endif
  • uspace/lib/c/arch/amd64/include/libarch/syscall.h

    re3272101 rd5a89a3  
    3434 */
    3535
    36 #ifndef LIBC_amd64_SYSCALL_H_
    37 #define LIBC_amd64_SYSCALL_H_
     36#ifndef _LIBC_amd64_SYSCALL_H_
     37#define _LIBC_amd64_SYSCALL_H_
    3838
    3939#define LIBARCH_SYSCALL_GENERIC
  • uspace/lib/c/arch/amd64/include/libarch/thread.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_THREAD_H_
    36 #define LIBC_amd64_THREAD_H_
     35#ifndef _LIBC_amd64_THREAD_H_
     36#define _LIBC_amd64_THREAD_H_
    3737
    3838#endif
  • uspace/lib/c/arch/amd64/include/libarch/tls.h

    re3272101 rd5a89a3  
    3333 */
    3434
    35 #ifndef LIBC_amd64_TLS_H_
    36 #define LIBC_amd64_TLS_H_
     35#ifndef _LIBC_amd64_TLS_H_
     36#define _LIBC_amd64_TLS_H_
    3737
    3838#define CONFIG_TLS_VARIANT_2
  • uspace/lib/c/arch/amd64/src/fibril.S

    re3272101 rd5a89a3  
    3737# pointed by the 1st argument. Returns 0 in RAX.
    3838#
    39 FUNCTION_BEGIN(__setjmp)
     39FUNCTION_BEGIN(__context_save)
    4040        movq (%rsp), %rdx     # the caller's return %eip
    4141
    4242        # in %rdi is passed 1st argument
    43         movq %rdx, CONTEXT_OFFSET_PC(%rdi)
    44         movq %rsp, CONTEXT_OFFSET_SP(%rdi)
     43        movq %rdx, __CONTEXT_OFFSET_PC(%rdi)
     44        movq %rsp, __CONTEXT_OFFSET_SP(%rdi)
    4545
    46         movq %rbx, CONTEXT_OFFSET_RBX(%rdi)
    47         movq %rbp, CONTEXT_OFFSET_RBP(%rdi)
    48         movq %r12, CONTEXT_OFFSET_R12(%rdi)
    49         movq %r13, CONTEXT_OFFSET_R13(%rdi)
    50         movq %r14, CONTEXT_OFFSET_R14(%rdi)
    51         movq %r15, CONTEXT_OFFSET_R15(%rdi)
     46        movq %rbx, __CONTEXT_OFFSET_RBX(%rdi)
     47        movq %rbp, __CONTEXT_OFFSET_RBP(%rdi)
     48        movq %r12, __CONTEXT_OFFSET_R12(%rdi)
     49        movq %r13, __CONTEXT_OFFSET_R13(%rdi)
     50        movq %r14, __CONTEXT_OFFSET_R14(%rdi)
     51        movq %r15, __CONTEXT_OFFSET_R15(%rdi)
    5252
    5353        movq %fs:0, %rax
    54         movq %rax, CONTEXT_OFFSET_TLS(%rdi)
     54        movq %rax, __CONTEXT_OFFSET_TLS(%rdi)
    5555
    56         xorq %rax, %rax                      # __setjmp returns 0
     56        xorq %rax, %rax                      # __context_save returns 0
    5757        ret
    58 FUNCTION_END(__setjmp)
     58FUNCTION_END(__context_save)
    5959
    6060## Restore current CPU context
     
    6363# pointed by the 1st argument. Returns second argument in RAX.
    6464#
    65 FUNCTION_BEGIN(__longjmp)
    66         movq CONTEXT_OFFSET_R15(%rdi), %r15
    67         movq CONTEXT_OFFSET_R14(%rdi), %r14
    68         movq CONTEXT_OFFSET_R13(%rdi), %r13
    69         movq CONTEXT_OFFSET_R12(%rdi), %r12
    70         movq CONTEXT_OFFSET_RBP(%rdi), %rbp
    71         movq CONTEXT_OFFSET_RBX(%rdi), %rbx
     65FUNCTION_BEGIN(__context_restore)
     66        movq __CONTEXT_OFFSET_R15(%rdi), %r15
     67        movq __CONTEXT_OFFSET_R14(%rdi), %r14
     68        movq __CONTEXT_OFFSET_R13(%rdi), %r13
     69        movq __CONTEXT_OFFSET_R12(%rdi), %r12
     70        movq __CONTEXT_OFFSET_RBP(%rdi), %rbp
     71        movq __CONTEXT_OFFSET_RBX(%rdi), %rbx
    7272
    73         movq CONTEXT_OFFSET_SP(%rdi), %rsp   # ctx->sp -> %rsp
     73        movq __CONTEXT_OFFSET_SP(%rdi), %rsp   # ctx->sp -> %rsp
    7474
    75         movq CONTEXT_OFFSET_PC(%rdi), %rdx
     75        movq __CONTEXT_OFFSET_PC(%rdi), %rdx
    7676
    7777        movq %rdx,(%rsp)
    7878
    79         movq CONTEXT_OFFSET_TLS(%rdi), %rdi
     79        movq __CONTEXT_OFFSET_TLS(%rdi), %rdi
    8080        movq %rdi, %fs:0
    8181
    82         movq %rsi, %rax                      # __longjmp returns second argument
     82        movq %rsi, %rax                      # __context_restore returns second argument
    8383        ret
    84 FUNCTION_END(__longjmp)
     84FUNCTION_END(__context_restore)
    8585
  • uspace/lib/c/arch/amd64/src/rtld/dynamic.c

    re3272101 rd5a89a3  
    2727 */
    2828
    29 /** @addtogroup libcia32
     29/** @addtogroup libcamd64
    3030 * @brief
    3131 * @{
Note: See TracChangeset for help on using the changeset viewer.