35,9 → 35,7 |
#ifndef KERN_sparc64_AS_H_ |
#define KERN_sparc64_AS_H_ |
|
#ifdef CONFIG_TSB |
#include <arch/mm/tsb.h> |
#endif |
#include <arch/mm/tte.h> |
|
#define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH 1 |
|
46,16 → 44,44 |
#define USER_ADDRESS_SPACE_START_ARCH (unsigned long) 0x0000000000000000 |
#define USER_ADDRESS_SPACE_END_ARCH (unsigned long) 0xffffffffffffffff |
|
#define USTACK_ADDRESS_ARCH (0xffffffffffffffffULL-(PAGE_SIZE-1)) |
#define USTACK_ADDRESS_ARCH (0xffffffffffffffffULL - (PAGE_SIZE - 1)) |
|
#ifdef CONFIG_TSB |
|
/** TSB Tag Target register. */ |
typedef union tsb_tag_target { |
uint64_t value; |
struct { |
unsigned invalid : 1; /**< Invalidated by software. */ |
unsigned : 2; |
unsigned context : 13; /**< Software ASID. */ |
unsigned : 6; |
uint64_t va_tag : 42; /**< Virtual address bits <63:22>. */ |
} __attribute__ ((packed)); |
} tsb_tag_target_t; |
|
/** TSB entry. */ |
typedef struct tsb_entry { |
tsb_tag_target_t tag; |
tte_data_t data; |
} __attribute__ ((packed)) tsb_entry_t; |
|
typedef struct { |
#ifdef CONFIG_TSB |
tsb_entry_t *itsb; |
tsb_entry_t *dtsb; |
#endif /* CONFIG_TSB */ |
} as_arch_t; |
|
#else |
|
typedef struct { |
} as_arch_t; |
|
#endif /* CONFIG_TSB */ |
|
#include <genarch/mm/as_ht.h> |
|
#ifdef CONFIG_TSB |
# include <arch/mm/tsb.h> |
# define as_invalidate_translation_cache(as, page, cnt) tsb_invalidate(as, page, cnt) |
#else |
# define as_invalidate_translation_cache(as, page, cnt) |